- ベストアンサー
フォルダを自動生成するプログラム
- Excelファイルから、8桁の半角数字と複数の全角文字を結合したフォルダ名を生成するプログラムを作成したいです。
- フォルダ名は、各行の数字と文字を結合した形式で作成されます。
- 生成されたフォルダは、Excelの各行に対応して作成されます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
strPath = ThisWorkbook.Path ですから、strPathはファイルがあるディレクトリ を示しています。したがって、 MkDir strPath & "\" & strFile の strPath & "\" & strFile は、 Excelファイルのあるディレクトリのフルパス\フォルダ名 ということです。
その他の回答 (6)
- piroin654
- ベストアンサー率75% (692/917)
>Excelファイルのあるディレクトリのフルパス\フォルダ名 ではなく、 Excelファイルのあるディレクトリのカレントパス\フォルダ名 ですね。
- piroin654
- ベストアンサー率75% (692/917)
>MkDir strPath & "\フォルダ入れ\" & strFile を MkDir strPath & "\" & strFile にしてください。
- nora1962
- ベストアンサー率60% (431/717)
該当するsheetがActiveなら cells(1,1)&cells(1,2)のように「cells(行,列)」で値を取得できます。 変数 i を使って i =1 do while( cells(i,1) != "" ) 'フォルダの作成 loop のようにすればできるようでしょう。 この説明で分からないようなら、すみませんがEXCEL VBAの入門書か入門サイトで勉強しなおす必要があると思います。
- piroin654
- ベストアンサー率75% (692/917)
No2です。 使っていないものが残っていました。 コード中の、 Dim L2 As Long L2 = 1 L2 = L2 + 1 変数L2は使っていないので、コメントアウトするか 削除しておいてください。あっても何もしませんが。
お礼
まことにありがとうございます。 ご教示いただいた方法でできました! ”フォルダ入れ”というフォルダに格納するようにされていますが、 エクセルデータがあるカレントディレクトリ内にフォルダを生成するにはどのようにしたらよろしいでしょうか? strPathを色々といじりましたが、どうしてもエラーになってしまい解りません。
- piroin654
- ベストアンサー率75% (692/917)
一応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)
http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm FileSystemObjectのCreateFolderメソッドを用いればできると思います。 作成前にExistsFolderメソッドですでにあるかどうか調べたほうがいいと思いますが。
お礼
ありがとうございます。 ご教示いただいた方法ですと、フォルダ名を手打ち入力するようですが、 エクセルデータから引っ張ってくる方法がどうにも解りません。 どうぞよろしくお願いいたします。
お礼
教えていただいたコードを色々と変えて利用しています。 どうもありがとうございました。