初めて自分の家と他人の家が違う、と意識した時

いつもお世話になっております。
下記のコードは
557766の名前のフォルダがない場合
ans = MsgBox("作成しますか", vbOKCancel, test)

1.すでにフォルダが存在したら 終了

2.フォルダが存在したかったら
作成しますかと尋ねて
 OKなら 作成する
 Cancelなら 終了する

としたいのですが、
作成するのは成功しました。

他はエラーになります。

わかる方おしえてくれませんでしょうか

Sub test1()
Dim filePath As String
Dim Fso As Object

filePath = "C:\Users\user\OneDrive\デスクトップ\移動先\557766"

Set Fso = CreateObject("Scripting.FileSystemObject")


If Fso.folderExists(filePath) = False Then

ans = MsgBox("作成しますか", vbOKCancel, test)
If ans = vbOK Then
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")

wsh.popup "実行中", 1, , vbInformation
Fso.createfolder filePath
Else
wsh.popup "キャンセルされました。", 1, , vbInformation
Exit Sub
Else
wsh.popup "既に存在します", 1, , vbInformation
End If

Set Fso = Nothing
End Sub

質問者からの補足コメント

  • うーん・・・

    いつもお世話になっております。
     >wsh.popup "既に存在します", 1, , vbInformation
    のように指定しているので「オブジェクトが存在しない」
    というエラーになっているのではありませんか?
    オブジェクトが存在しないということは
    変数の宣言するのですか

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/03/02 22:24
  • うーん・・・

    Dim wsh2 As Object
    Set wsh2 = CreateObject("WScript.Shell")
    wsh2.popup "既に存在します", 1, , vbInformation
    これでうまくいきました。
    これであってますでしょか

      補足日時:2022/03/02 22:26

A 回答 (3件)

補足を見て。



あっているかどうかより、無駄に変数を増やす必要はないと思いますけど?
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2022/03/04 19:17

If Fso.folderExists(filePath) = False Then



ans = MsgBox("作成しますか", vbOKCancel, test)

Dim wsh As Object '★
Set wsh = CreateObject("WScript.Shell") '★

If ans = vbOK Then

宣言とSetステートメントの位置が悪いのでは?
最初に行なっても良いんでしょうけどね。
質問文だとYESの時以外は宣言されてない状態で使うようになってますよね?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/03/04 19:16

こんばんは



>他はエラーになります。
MsgBoxでOKを押した時だけ、
 >Set wsh = CreateObject("WScript.Shell")
としてオブジェクトを生成していますが、それ以外では生成していませんよね?

それにも関わらず、
 >wsh.popup "既に存在します", 1, , vbInformation
のように指定しているので「オブジェクトが存在しない」というエラーになっているのではありませんか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/03/04 19:16

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


おすすめ情報