• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダを自動生成するプログラム)

フォルダを自動生成するプログラム

このQ&Aのポイント
  • Excelファイルから、8桁の半角数字と複数の全角文字を結合したフォルダ名を生成するプログラムを作成したいです。
  • フォルダ名は、各行の数字と文字を結合した形式で作成されます。
  • 生成されたフォルダは、Excelの各行に対応して作成されます。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

strPath = ThisWorkbook.Path ですから、strPathはファイルがあるディレクトリ を示しています。したがって、 MkDir strPath & "\" & strFile の strPath & "\" & strFile は、 Excelファイルのあるディレクトリのフルパス\フォルダ名 ということです。

zyaba
質問者

お礼

教えていただいたコードを色々と変えて利用しています。 どうもありがとうございました。

その他の回答 (6)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.7

>Excelファイルのあるディレクトリのフルパス\フォルダ名 ではなく、 Excelファイルのあるディレクトリのカレントパス\フォルダ名 ですね。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

>MkDir strPath & "\フォルダ入れ\" & strFile を MkDir strPath & "\" & strFile にしてください。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.4

該当するsheetがActiveなら cells(1,1)&cells(1,2)のように「cells(行,列)」で値を取得できます。 変数 i を使って i =1 do while( cells(i,1) != "" ) 'フォルダの作成 loop のようにすればできるようでしょう。 この説明で分からないようなら、すみませんがEXCEL VBAの入門書か入門サイトで勉強しなおす必要があると思います。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。 使っていないものが残っていました。 コード中の、 Dim L2 As Long L2 = 1 L2 = L2 + 1 変数L2は使っていないので、コメントアウトするか 削除しておいてください。あっても何もしませんが。

zyaba
質問者

お礼

まことにありがとうございます。 ご教示いただいた方法でできました! ”フォルダ入れ”というフォルダに格納するようにされていますが、 エクセルデータがあるカレントディレクトリ内にフォルダを生成するにはどのようにしたらよろしいでしょうか? strPathを色々といじりましたが、どうしてもエラーになってしまい解りません。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

一応Excelファイルがある同じフォルダに 「フォルダ入れ」という名前のフォルダを 作っておきます。 Excelの標準モジュールに以下を貼り付け 保存してください。 マクロの実行で「mkフォルダ」を実行。 Sub mkフォルダ() Dim strPath As String Dim strFile As String Dim L1 As Long Dim L2 As Long Dim x As Long strPath = ThisWorkbook.Path L2 = 1 x = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '最終行 For L1 = 1 To x 'A列のデータが尽きたところで終了 If Worksheets("Sheet1").Cells(L1, 1).Value = "" Then Exit Sub End If 'フォルダ作成 strFile = Worksheets("Sheet1").Cells(L1, 1).Value & _ Worksheets("Sheet1").Cells(L1, 2).Value MkDir strPath & "\フォルダ入れ\" & strFile strFile = "" L2 = L2 + 1 Next L1 End Sub

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm FileSystemObjectのCreateFolderメソッドを用いればできると思います。 作成前にExistsFolderメソッドですでにあるかどうか調べたほうがいいと思いますが。

zyaba
質問者

お礼

ありがとうございます。 ご教示いただいた方法ですと、フォルダ名を手打ち入力するようですが、 エクセルデータから引っ張ってくる方法がどうにも解りません。 どうぞよろしくお願いいたします。

関連するQ&A