Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
ファイルの認識について
投稿日時: 22/09/30 11:15:33
投稿者: takatada72

お世話になります。
 
下記のようにファイルがあれば、そのファイルを表示させて、ファイルがなければ、ファイル
が無いと表示するようにVBAを作りたいのですが、なぜか、無い場合のみエラーが出てしまいます。
ご指導頂けないでしょうか
※D3のセルには、アイテムの番号が入ります。(I100889やD104902など)
 
●ファイルが無い場合にはアクセスできませんとエラーになってしまう。
\\@共有\data\Item\NG\I100889.pdf '実際にファイルは、ありません。
\\@共有\data\Item\NG\D104902.pdf '実際にファイルは、あり、上記のようなエラーはでません。
 
 
    Dim a As String 'セルの値を表示
    a = Range("D3") '今回の場合は、I102356でファイルは、無い状態でテストしました。
 
    Dim MyPath1,MyPath2 As String
     
 MyPath1 = "\\@共有\data\Item\NG\"
 MyPath2 = MyPath1 & a & ".pdf"
    
'ファイルが無い時にメッセージを表示
 
    If IsNull(MyPath2) Then MsgBox "ファイルがNGにありません。": End
 
    CreateObject("Shell.Application").ShellExecute MyPath2 'ファイルを表示
 
End Sub
 
お忙しいとは思いますが宜しくお願い致します。

投稿日時: 22/09/30 11:30:56
投稿者: takatada72

追記になりますが、ファイルが存在していても、表示されない場合が出てきて、安定していない状況でした。
 
すみませんが宜しくお願い致します。

回答
投稿日時: 22/09/30 11:38:52
投稿者: simple

(1)
ローカルなドライブであれば、Dir関数にフルパスを与えて、
""が返れば、該当ファイルなしと判断ができます。(ネット検索してみてください)
ただ、ネットワーク上のフォルダにはDir関数を使えません。
そこで、ネットワークドライブの割り当てをしておけば、
Dir関数を使って、ファイルの有無が確認できると思います。
(2)
もうひとつは、FileSystemObjectを使う方法です。
以下の記事を参考にしてみてください。
http://officetanaka.net/excel/vba/filesystemobject/filesystemobject10.htm
 
なお、FileSystemObjectの全体像については、
http://officetanaka.net/excel/vba/filesystemobject/
から始まる記事が参考になります。(時間があるときにどうぞ)

投稿日時: 22/09/30 11:56:05
投稿者: takatada72

お疲れさまです。
 
早速、ありがとうございました。
FileSystemObjectにて確認をさせて頂きます。
 
後日、回答させて頂きます。
引き続き宜しくお願い致します。

投稿日時: 22/09/30 12:12:12
投稿者: takatada72

simpleさん
 
お疲れさまです。
 
共有場所にあるファイルなので、下記に教えて頂いた方法に切り替えてみました。
無事に解決できましたので終了させて頂きます。
 
ありがとうございました。
Dim FSO As Object, Target As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
 
http://officetanaka.net/excel/vba/filesystemobject/filesystemobject10.htm
 
:lol: