プロが教える店舗&オフィスのセキュリティ対策術

VBA超初心者です。画像のマクロで、With Application.FileDialog(msoFileDialogFolderPicker)~End Withの部分で最初から選ばず、毎回同じフォルダを開き、その中のフォルダを選択したらその後の処理をそのまま続けるにはどのようにしたらよいのでしょうか。
ChDir ThisWorkbbook. Path で、希望のフォルダは開けましたが後の処理につなげる方法を教えてください。よろしくお願いいたします。

「VBA 複数ファイルのシートを1枚にまと」の質問画像

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

  • 補足:画像のマクロを実行すると、階層から指定フォルダを選択し開くを押すと、フォルダ内のすべてのエクセルファイルのシートをコピペして1枚のシートにまとめ、同一フォルダ内に別ファイルで保存されます。

      補足日時:2021/04/27 19:12

A 回答 (3件)

こんばんは、


>ChDir ThisWorkbook.Path
VBA実行ブックと同じフォルダ内で良いの?
であれば、すでに回答されていますね。

>毎回同じフォルダを開き、その中のフォルダを選択したら
その後の処理をそのまま続けるにはどのようにしたらよいのでしょうか。
フォルダピッカーの初期フォルダを指定したいと言う事でしょうか?

With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path
If .Show = True Then
dl_Dir = .SelectedItems(1)
End If
End With
If dl_Dir = "" Then Exit Sub

それともダイアログ自体出さないと言う事かな?
こんな手順は、どうでしょう。
作業よシートなどの使わないセルにパスを書くように確保します
例えばA1セル 文字は、希望の色、見えないようにするなら背景色と同じにするなど、、場合によっては非表示にできる列か行を指定しておくとか

プロシージャを実行する
初めに
if range("A1")="" then 
ダイアログ表示
range("A1").value = .selectedItems(1)
end if

dl_Dir = range("A1").value

if range("A1")="" then は、簡単な例です。
エラー対策を考えるとDir関数などで所在を確認した方が良いでしょう。

ご質問を取り違えていたらごめんなさい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。希望どおりに実行でき大変助かりました。プロシージャ~のご説明も今後勉強して理解したいと思います。この度はありがとうございました。

お礼日時:2021/04/27 20:21

理解不足で失礼しました。


恐らくNo.2さんの方法で出来ますよね。
    • good
    • 0
この回答へのお礼

こちらこそ説明がわかりづらくて申し訳ありませんでした。この度はありがとうございました。

お礼日時:2021/04/27 20:24

1.With Application.FileDialog(msoFileDialogFolderPicker)~End Withは、


先頭に「'」をつけてコメント化(実行しないように)します。
'With Application.FileDialog(msoFileDialogFolderPicker)
'中略
'End With

2.SOURCE_DIR = dl_Dir & "\"の上の空行に、下のどちらかを入力します。
後者の場合は他のフォルダでもいいですが、最後に¥は入れないようにします。
dl_Dir = ThisWorkbook.Path
dl_Dir = "C:\Users\ユーザー名\Documents"
    • good
    • 0
この回答へのお礼

回答ありがとうございます。どちらもF8で実行しましたが、指定フォルダが開かずその中のフォルダも選択できませんでした。マクロファイルのあるフォルダがまず開かれて、その後同一フォルダ内の別フォルダを選択⇒開く⇒実行という動作をさせたいのです。

お礼日時:2021/04/27 19:59

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