[VBA] 書き込み権限の確認方法

このQ&Aのポイント
  • VBAを使用して、フォルダの書き込み権限を確認する方法について教えてください。
  • Dir関数を使用してフォルダの存在を確認し、txtファイルを作成することで書き込み権限を確認する方法があるか教えてください。
  • ファイルサーバー内の1から50のフォルダに対して書き込み権限の確認を行いたいです。具体的な例文をお教えください。
回答を見る
  • ベストアンサー

[VBA] 書き込み権限があるか確認する方法

こちらの識者の方々にはいつもお世話になっています。 VBAの質問です。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと ファイルサーバー内にある50個ほどのフォルダにそれぞれファイルを保存するコードを書いているのですが、 フォルダの存在チェックと、そのフォルダに書き込み権限があるかどうかのチェックを実際にやりたい処理の前にしようと思っています。 フォルダの存在チェックはDir関数でやるとして、書き込み権限があるかどうかは、.xlsxファイルを作成せずに、txtファイルを作る(作ろうとする)ような方法があった気がします。 とにかく軽ければやり方については特に頓着していないのですが、\\FileServer\直下にフォルダ名が1~50のフォルダがあると仮定し、例文を教えていただけますでしょうか。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.1

Dim Kekka As Boolean Kekka = False On Error Goto xxxxx Open ファイル名 For Output As #1 Kekka = True Close #1 Kill ファイル名 xxxxx: On Error Goto 0 If Kekka = True Then MsgBox "ファイルが作成できます" Else MsgBox "ファイルが作成できません" End If ファイル名は「パス付き」で「存在しないファイル」を指定します。 もし「既存ファイル」を指定すると、実行時に「削除される」ので注意して下さい。

rihitomo
質問者

お礼

これです! ありがとうございました!

関連するQ&A

  • フォルダの権限?

    APPフォルダを見られるようにしたくて、ユーザー内¥PC名のフォルダの属性の隠しファイルにチェックを入れて適用ボタンを押して「変更をこのフォルダー、サブフォルダー…」を選択しました。 途中、権限を聞かれOKしました。 長く処理がかかったあとにデスクトップのいくつかのアイコンや、ユーザーフォルダ内のファイルが消え、パブリック~のみとなりました。 慌ててユーザーフォルダのプロパティで属性をどちらもチェックを外して又権限をOKして処理したのですが表示は変わらず…。 マイクラのワールドは選べるので存在しているのだと思いますが、起動するとクラッシュします。 直し方を教えて下さい(汗)

  • findを使うのか?

    ruby超初心者です。教えてください。 このようなディレクトリ構造があるとします。 root_dir |--12_dir | a.txt | b.txt |--23_dir | a.txt | b.txt a.txt, b.txtには、ともに A= B= と書かれているとします。 このとき、root_dir(c:\root_dir)にアクセスして、 12_dir直下のa.txtには、12_dirの最初の文字"1"をとって A=1 B=(1) と書き換え、 12_dir直下のb.txtには、12_dirの第2の文字"2"をとって A=2 B=(2) と書き換え、 23_dir直下のa.txtには、23_dirの最初の文字"1"をとって A=2 B=(2) と書き換え、 23_dir直下のb.txtには、23_dirの第2の文字"3"をとって A=3 B=(3) と書き換えるには、Rubyでどのようなプログラムを書けばよいのでしょうか。 なお、実際のファイル数はもっと膨大です。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Windowsのアクセス権限

    Windowsのアクセス権限に関して教えて下さい。 あるグループにユーザーが2つあります。 grp01 ┣user01 ┗user02 共有フォルダの下のにgrp01用のフォルダを作成しました。 共有 ┣grp01用 ┃┣ユーザー1フォルダ1 ┃┣ユーザー2フォルダ1 ┃┗ユーザー1ファイル1 ┗フォルダ1 grp01のユーザーがやって良い事は、 grp01用の下にファイルを追加したり、書き換えたり、消したりです。 grp01用というフォルダそのものに対して、書き換えや削除はダメ。 共有直下は参照だけ。 user01が作ったファイルはuser02も自由にできる。 user02が作ったファイルはuser01も自由にできる。 どういった権限を与えれば行けるでしょうか?

  • readdir におけるフルパスでのファイル名取得(1)

    前提: current directory---perl scriptが存在する data directory -----.\DATA¥ current directory直下のフォルダ"DATA"に含まれるファイル名(text file)の取得は、 ------------------------------ opendir(DIR,"./DATA/"); @file=readdir(DIR); closedir(DIR); foreach $myfilename(@file){ if($myfilename=~/txt|TXT/){ print "$myfilename\n"; #確認用 } } で、できますが、フルパス付は、どのようにすればできるでしょうか? 現状、DOS promptで下記のようにやっています。 dir /s/b/o .\DATA\*.txt > filelist.dat これを、perlで読み込んで、処理をやっています。 readdirをうまく使って、perlの中で済ませてしまいたいのです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 「dosコマンド」で下位まで削除する方法

    ファイル管理ソフトを導入すると、 指定したワークフォルダ以下のフォルダ全てに管理フォルダや管理ファイルができてしまいます。 c:\dir1\ +-管理フォルダ\ | +-管理ファイル +-dir11\ | +-管理フォルダ\ | | +-管理ファイル | +file.xls +-dir12\ | +-管理フォルダ\ | | +-管理ファイル | +-dir121\ |   +-管理フォルダ\ |   | +-管理ファイル |   +-file.dat +-dir13\ | +-管理フォルダ\ |   +-管理ファイル +-file_a.txt +-file_b.txt 他に持っていく時、管理フォルダが邪魔でしかたありません。 「c:\dir1\」より下にある「管理フォルダ\」の中味全部を問答無用で全部消してしまうにはどうすれば良いでしょうか。 上の状態がを瞬にして下記のようにしたいのですが、DOSコマンドに慣れていなくて困っています。 c:\dir1\ +-dir11\ | +file.xls +-dir12\ | +-dir121\ |   +-file.dat +-dir13\ +-file_a.txt +-file_b.txt

  • 管理者権限でのコマンドプロンプトにて

    .cmdのファイルを他パソコンで実行したいのですが 管理者権限ですと、カレントディレクトリ?がC:\Windows\system32 になってしまいコピーに失敗してしまうのですが 管理者権限で.cmdを実行しているフォルダにあるtest.txtをC:\にtest.txtを コピーするコマンドはどう記述すればよいのでしょうか? ■管理者権限で実行した場合 C:\Windows\system32>copy test.txt C:\ 指定されたファイルが見つかりません。

  • VBAのDoLoopでファイルがあるかチェック

    VBA超初心者なりに記述したのですが、どうしたらいいのかわからないのでお助けください。 例えば以下のような一定の命名規則のファイルが、r:\testに複数あります。 0123-20140301-abcd.txt 0124-20140302-efgh.txt xxxx-20140301.csv xxxx-20140302.csv 「通し番号4桁-日付8桁-4桁(不定).txt」に対応する「xxxx(固定)-日付8桁.csv」のファイルがあるかチェックしたいだけなのですが、以下の記述では一番古い日付の1個しかチェックしてくれません。 ''''''''''''''''''''''''''''''''''''''''''''''''''  Dim buf As String  Dim cnt As Long  buf = Dir("r:\test\????-20*.txt") Do While buf <> ""  If Dir("r:\test\xxxx-" & Mid(buf, 6, 8) & ".csv") <> "" Then   Call MsgBox(buf & "が存在します")  End If  cnt = cnt + 1  buf = Dir() Loop   Call MsgBox(cnt & "個のファイルをチェック済み") '''''''''''''''''''''''''''''''''''''''''''''''''' 「xxxx-20140301.csv」が存在しない場合は「1個のファイルをチェック済み」と出て終わります。 本当は2個のファイルをチェックしてほしいのです。 なお、実際にファイルが何個あるかはその時々なので、いつでも使えるようにForNextではなくDoLoopを選びました。 If~Endifがなければ「2個のファイルをチェック済み」と出るので、その部分の記述が怪しいとは思うのですが。 なお、自宅のPCにはExcelがないので、VB2010Expressを入れて再現してみました。 msgboxの記述方法が違うくらいで、後は職場で悩んでいた内容そのままです。 どうぞよろしくお願いします。

  • ファイル権限

    皆様、お世話になります。 windows server 2003でファイルサーバを作り、フォルダに権限を設定しました。 やり方は、ドメインに参加したユーザーを一人ずつ追加する手法です。 ところが、あるユーザーアカウント一つのみが、一つの読み取り専用ファイルを除いてアクセス出来なくなっています。 権限は下位のファイル・フォルダに適用し、フルコントロール以外のチェックを入れています。 どうしてアクセス拒否が起こってしまうのでしょうか。 どなたか詳しい方、助けて下さい。

  • windows 共有ファイル のアクセス権(2003server)

    いつもお世話になってます。 フォルダを開く時につい手が滑って別のフォルダに引っ掛けてしまう事があります。 フォルダの数が結構あるのでどこに引っ掛けて入れてしまったのか探すのに時間がかかります。アクセス権で何とかならないでしょうか? SharDir(第一階層) の中にフォルダ Dir_01~ Dir_50 まで50個のフォルダがあるとします。Dir_01~ Dir_50の中のサブフォルダとファイルには rwx が出来るようにしたいです。 SharDir の第一階層に制限を加えたいのですが可能でしょうか。 NTFSのアクセス権を使用しましたが、うまくいきませんでした(以下)。 1) SharDir は読み込みと実行権限を設定 2) Dir_01~ Dir_50に書込み権限を追加 結果は新規作成のみ制御できました。 もうひとつ 1) SharDir は読み込みと実行権限を設定 2) Dir_01~ Dir_50 親からの継承のチェックをはずす 3) Dir_01~ Dir_50 のサブディレクトリとファイルに書込み権限を追加(詳細設定) Dir_01~ Dir_50の中にアクセスできませんでした よろしくお願いします。

  • ファイル確認ツールにおいて

    使用OS:Win2000Pro あるフォルダ内のファイルのサイズと数をチェックするツールがないか探しています。なんとかフリーのツールがあればなと・・・。 組み合わせでもいいのですが、毎日のチェックに使用したいのです。 例:Aのフォルダには、A1~A10までのフォルダがあり、   その各フォルダ内のそれぞれには、数個のファイルがあります。   A1のフォルダであれば、   A101.DAT(フォルダ名+01.DAT) ~   A150.DAT(フォルダ名+50.DAT)まであります。   で、ある処理を行うとファイル名.TXTのファイルが出来ます。   A101.DATであれば、A101.TXTのように。   そこで、DATの数とTXTの数が同じかチェックが行えることと、   ファイルのサイズのチェックを行いたい。   TXTファイルは処理が正常時には、ファイルサイズが0KBで   異常時は、0KBではない。 いろいろ探してはいるのですが、なかなか見つからなくて。 よろしくお願いいたします。

専門家に質問してみよう