dポイントプレゼントキャンペーン実施中!

 ExcelVBAの書き方で質問があります。
ファイル名やフォルダ名を指定して…
(1)フォルダにファイルが存在するかどうかを調べる方法
(2)フォルダが存在するかどうかを調べる方法
(3)ファイルが他のユーザーの使用中になっているかを調べる方法

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

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2003/07/26 10:00

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/defa …
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/07/26 09:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています