アプリ版:「スタンプのみでお礼する」機能のリリースについて

シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWorkbook.Path & FolderName "*") で構文エラーとなります?連結するにはどう書き換えたら良いかご教授いただけませんでしょうか?よろしくお願いいたします。
///////////////////////
Sub シートコピー()
Application.DisplayAlerts = False
Dim A
Dim FolderName As String '文字列を入れる変数として「FolderName」を使う
FolderName = Application.GetOpenFilename 'ダイアログを用いて選択したファイルのパスをFolderNameとする
A = Dir(ThisWorkbook.Path & FolderName "*") 'フォルダ内のブック名を取得
Do While A <> ""
'ブックを開く
Workbooks.Open ThisWorkbook.Path & "\FolderName\" & A
With ActiveWorkbook
'シートをコピーして取得
.Worksheets("利用状況表(保育短時間)").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
'シート名をブック名に変更
ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = Left(.Name, 6)
.Close False 'ブックを閉じる
End With
A = Dir() '次のブック名を取得
Loop
End Sub

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

  • ありがとうございます。
    A = Dir(ThisWorkbook.Path & FolderName & "*")で連結し直したところ、実行時エラー52 ファイル名または番号が不正です、となりました?

      補足日時:2022/08/22 13:28
  • ご指摘のとおり、フォルダ内のファイルが対象なのでダイアログでフォルダの指定をする方法をご教授頂けるとありがたいです。

      補足日時:2022/08/22 13:54

A 回答 (4件)

ダイアログでファイルのフルパスを取得するより、フォルダを取得した方が宜しいのでは?


スマホなのでコードを全般に書き直すのは諸先輩方にお任せしますけど。

& "\FolderName\" &

これも変数を文字列にしてはダメじゃないかなと。
    • good
    • 1

No.3続き



vbaなんだから、1ステップずつ動かして、その時の
ThisWorkbook.Pathの中身、FolderNameの中身、

カーソル当てれば確認出来るでしょ?
    • good
    • 1

そもそも変じゃ無い?



ThisWorkbook.Pathは、仮にデスクトップに置いてあるブックなら
"C:\Users\user\Desktop"の様になり、

FolderName = Application.GetOpenFilename も
"C:\Users\user\・・・・"の様になるわけ。

どっちも、フルパスで、C:\から始まる訳だから、
それを連結したら、
C:\・・・・・が2回も出てくるよ。
    • good
    • 1

文字列の連結をする。



A = Dir(ThisWorkbook.Path & FolderName "*")



A = Dir(ThisWorkbook.Path & FolderName & "*")
    • good
    • 1

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