みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォルダを開くVBS

【環境】Windows 10

【ご教示いただきたい点】
フォルダが存在していた場合、そのフォルダを開くVBSを作成しましたが、フォルダが存在しているにもかかわらず、フォルダが存在していない旨のダイアログが表示されます。
何が原因なのかご教示をお願いいたします。
----
Option Explicit
On Error Resume Next

Dim objShell 'Shell オブジェクト
Dim objFso 'Fso オブジェクト
Const strFolderName = "C:\Temp"

Set objShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
Set objFso = CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
If objFso.FileExists(strFolderName) Then
objShell.Explore strFolderName
WScript.Echo strFolderName & " を開きました。"
Else
WScript.Echo strFolderName & " は存在しません"
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If

Set objShell = Nothing
Set objFso = Nothing
--

投稿日時 - 2019-04-09 22:34:10

QNo.9605231

困ってます

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

If objFso.FolderExists(strFolderName) Then
と思います。

投稿日時 - 2019-04-09 23:19:27

お礼

ありがとうございます。

システムエンジニアがプログラミングしてユーザーに渡していたものについて、ソースに間違いがあったので、急遽、自分が修正してユーザーに再提出することになったのですが、その際にケアレスミスをしてしまっていました。

Option Explicit
On Error Resume Next

Dim objShell 'Shell オブジェクト
Dim objFso 'Fso オブジェクト
Const strFolderName = "C:\Temp"

Set objShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
Set objFso = CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
If objFso.FolderExists(strFolderName) Then
objShell.Explore strFolderName
WScript.Echo strFolderName & " を開きました。"
Else
WScript.Echo strFolderName & " は存在しません"
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If

Set objShell = Nothing
Set objFso = Nothing

投稿日時 - 2019-04-10 22:07:31

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

リファレンスを見ましょう。

https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.visualbasic.fileio.filesystem.fileexists?view=netframework-4.7.2
> ファイルが存在する場合は True を返します。それ以外の場合は False を返します。 パラメーターがファイルではなくディレクトリのパスを表していた場合は、このメソッドも False を返します。

投稿日時 - 2019-04-09 23:15:39

お礼

ありがとうございます。

ケアレスミスをしていました。

自分では、「If objFso.FolderExists(strFolderName) Then」と記載したつもりでしたが、実際には「If objFso.FileExists(strFolderName) Then」で記載していて、「If objFso.FolderExists(strFolderName) Then」だと思い込んでいたため、間違いに気がついていませんでした。

投稿日時 - 2019-04-10 22:13:06

あなたにオススメの質問