• ベストアンサー

ファイルやフォルダの有無、他のユーザーの使用状況を調べたい

 ExcelVBAの書き方で質問があります。 ファイル名やフォルダ名を指定して… (1)フォルダにファイルが存在するかどうかを調べる方法 (2)フォルダが存在するかどうかを調べる方法 (3)ファイルが他のユーザーの使用中になっているかを調べる方法  現在は(1)については、Workbooks.Open Filename:=~でファイルが無ければ、On Error GoToで分岐させるといった方法を行っているのですが、もっとダイレクトに有無を調べる方法が知りたいのです。  (2)や(3)については、どうすればよいのやら?  初心者ですので、簡単な表現でお願いします。  よろしくご教授下さい。

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

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.2

Sub Test()   'ディレクトリ存在チェック   MsgBox IsDir("C:\")   '排他状態   MsgBox IsNoOpen("C:\test.xls") End Sub 'ディレクトリ存在チェック 'TRUE=存在している Public Function IsDir(ByVal inDirName As String) As Boolean   Dim fsoObj As Object   Dim fsoDir As Object      On Error Resume Next   Set fsoObj = CreateObject("Scripting.FileSystemObject")   Set fsoDir = fsoObj.GetFolder(inDirName)   IsDir = Not (fsoDir Is Nothing)      Set fsoDir = Nothing   Set fsoObj = Nothing End Function '誰かがファイルを開いていないかをチェックする 'TRUE=編集可能状態で開くことができる Public Function IsNoOpen(ByVal inXlsFileName As String) As Boolean   'ファイルが存在していないのは問題外でアウト   If Dir(inXlsFileName) = "" Then     Exit Function   End If      On Error Resume Next   '書き込み専用でオープンでエラーが発生しなければ、誰も開いていないとみなす   Open inXlsFileName For Binary Lock Read Write As #1   Close #1   IsNoOpen = (Err.Number = 0&) End Function

takaandhiro
質問者

お礼

うまくいきました! ありがとうございました! 具体的に書いていただき、大変助かりました! またよろしくお願いします!

その他の回答 (1)

  • darksky
  • ベストアンサー率66% (38/57)
回答No.1

ExcelVBAだけでファイルシステム関連の情報が入手できるかはわかりませんが、代替案としては「Microsoft Windows スクリプト テクノロジ」に含まれるWindows Script Hostの各種オブジェクトを利用する方法があります。 Microsoft Windows スクリプト テクノロジとは、JScriptやVBScriptの言語やScriptの実行環境、スクリプトから利用できるコンポーネントなどのことです。 Windows Script Hostには、各種機能を提供するCOMコンポーネントが多数含まれており、VBAからも呼び出すことが可能です。 作成したExcelVBAを配布する場合は、利用したコンポーネントがインストールされている必要があると思いますが、IEの5.x以上があればインストールされていると思うのですが・・・ (曖昧で申し訳ありません) FSO(FileSystemObject)にはドライブ、フォルダ、ファイル関連の情報を取得することができるオブジェクトが多数含まれているので、利用すると便利だと思います。 参考URLも書きましたが、「FileSystemObject」で検索するといい情報が見つかると思います。 ExcelVBAの場合は、「Microsoft Scripting Runtime」を参照設定する必要があるかもしれません。 VBAはあまり使ったことがないので、解決になるかはわかりませんが、VBからはFileSystemObjectをよく使っている話を聞きます。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp
takaandhiro
質問者

お礼

ありがとうございました。 URLを良く勉強してみたいと思います。

関連するQ&A