• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで新しいフォルダを作成するには)

VBAで新しいフォルダを作成するには

このQ&Aのポイント
  • 新しいフォルダを作成する方法について、VBAを使用してエクセル2010でフォルダを作成する方法を学びたいです。
  • MkDir関数を使用してフォルダを作成する方法はわかりますが、既にフォルダが存在する場合には作成しないようにしたいです。
  • また、エクセルのBOOK内の特定のシートにあるデータを使ってフォルダ作成を行い、ファイルのコピーを行いたいと考えています。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

Dir()関数でディレクトリが存在するかどうかを確認できます。 以下は例です。 SaveDir = myPth(0) & "\" & myCl.Offset(, 1).Value If Dir(SaveDir, vbDirectory) = "" Then MkDir SaveDir End If こういったものをFileCopyの前に挿入すればどうでしょうか?

emaxemax
質問者

お礼

MSZ006さん、さっそくありがとうございます。 Dir関数でファイル名が取得できることは知ってましたがフォルダ名もできるんですね! 以下のようにやってみました。 おかげさまでサンプルでのテストはうまくいきました。 助かりました。ありがとうございます。 Sub Sample02()   Dim myPth(1) As String, SaveDir As String, Fname As String   Dim myCl As Range   Dim wb As Workbook   Set wb = ThisWorkbook   myPth(0) = wb.Path      With Application.FileDialog(msoFileDialogFolderPicker)     If .Show = True Then       myPth(1) = .SelectedItems(1) '対象フォルダ指定     Else       MsgBox "キャンセル"       Exit Sub     End If   End With      With wb.Sheets("打診先")     For Each myCl In .Range("A2:A9") '対象リスト       SaveDir = myPth(0) & "\" & myCl.Offset(, 1).Value 'サブフォルダ       If Dir(SaveDir, vbDirectory) = "" Then         MkDir SaveDir '無ければ作成       End If       Fname = Dir(myPth(1) & "\" & CStr(myCl.Value) & ".xlsx")       If Fname <> "" Then '念のため確認         FileCopy myPth(1) & "\" & Fname, SaveDir & "\" & Fname         myCl.Offset(, 2).Value = "完了"       Else         myCl.Offset(, 2).Value = "該当なし"       End If     Next myCl   End With End Sub

すると、全ての回答が全文表示されます。

関連するQ&A