複数選択でのファイルの配列取り込みは下記でおこなえましたが、
tmp = Application.GetOpenFilename(, , "処理したいファイルを複数選択してください", , True)
For Z = LBound(tmp) To UBound(tmp)
同じような感じの事をフォルダでしたいのですが・・・
ネットや本を探してみましたが、見当たりません・・・
具体的には複数選択したフォルダ(年月の名前が付いたフォルダ)が複数個あり
そのフォルダ内に約700個づつファイルがります
フォルダは年月の名前が付くフォルダなので1年分だと12フォルダ、2年分だと24フォルダになり名前も変わります(201403、201404、201405、・・・・)
ファイルはフォルダの1分毎のデータになりますので名前が変わり、数も多いです。1フォルダ分(1ヶ月なら24時間×28~31日でだいたい700ファイルくらい)なので過去分も含めると月数が増えると手ではちょっとキツイです。
3か月分を処理するとして
フォルダ201403、201404、201405を複数選択し
フォルダ201403の
ファイル201403010001→201403010002→201403010003・・・ 201403312359
フォルダ201404の
ファイル201404010001→201404010002→201404010003・・・201404302359 フォルダ201405の
ファイル201405010001→201405010002→201405010003・・・201405312359
まで順次ファイルを開いてセルのデータを1ヶ月分毎に収集したいのですが
月数が増えると手ではちょっとキツイので複数フォルダを選択するとフォルダとファイルを配列に取り込み
対象Folders = 複数選択したフォルダの配列
For Z = LBound(対象Folders) To UBound(対象Folders)
対象files = 複数選択したファルダ内のファイルの配列
For Y = LBound(対象files) To UBound(対象files)
ファイルを開いてデータ収集
Next
Next
上記のようなイメージの処理をしたいのですが
ご存知の方ご教示いただけると幸いです。
よろしくお願いいたします。
OSはWindows7、エクセルは2010です。
No.1ベストアンサー
- 回答日時:
> 具体的には複数選択したフォルダ(年月の名前が付いたフォルダ)が複数個あり
(中略)
> フォルダは年月の名前が付くフォルダなので1年分だと12フォルダ、2年分だと24フォルダになり名前も変わります(201403、201404、201405、・・・・)
んーと、それだけ規則的にフォルダ名とファイル名がつけられているならば、複数フォルダの選択じゃなく
> 年月の名前が付くフォルダ
があるフォルダの選択(だけしか行わない)ボタンと処理年月区間の入力、それに処理実行ボタンを持つUIを作った方が楽なんじゃないかなと思いますが。
それなら、
For Z = LBound(処理年月区間) To UBound(処理年月区間)
対象フォルダ名 = 選択したフォルダ \ z の年月を文字列変換したもの
対象files = 対象フォルダ内のファイルの配列
For Y = LBound(対象files) To UBound(対象files)
ファイルを開いてデータ収集
Next
Next
というイメージでできると思いますが。
ご回答本当にありがとうございます。
フォルダ名は規則正しいですが、歯抜けで選択することもあり複数選択対象だけを配列に取り込みたいのと、他の作業でも使用したいので、方法はないのでしょうか?
大変お忙しいところお手数ですが、可能ならご教示お願いいたします。
No.2
- 回答日時:
フォルダーを一括で指定することは難しかったと思います。
多分普通はできません。行いことがほぼ分かったので、モジュールを書いてみました。
○フォルダーの指定は最初の年月と最後の年月から計算しています。
年月の取り込みは検討してください。今はモジュール内に書いています。
また、フォルダーのパスも書いています。変更してください。
○連続の年月指定でなく任意の年月指定の場合はフォルダーを一つずつ選択しシートに書いたり、シートに記入した年月を処理すればこのモジュールで対応できると思います。
○ファイルの処理はDirを使って順次処理しています(ファイル名を出力しているだけです)。
ファイル名を配列に格納とかはしていません。
シートのコードウィンドウです。これはコマンドボタンで動かしています。
Private Sub CommandButton1_Click()
Dim strPath As String 'フォルダーパス
strPath = "L:\999_Test\" 'フォルダー名をセット
Dim fromYear As Integer, fromMonth As Integer '開始年月
Dim toYear As Integer, toMonth As Integer '終了年月
Dim ym As Integer '月カウンタ
Dim Folder As String '個別フォルダー
fromYear = 2014: fromMonth = 3
toYear = 2014: toMonth = 5
Dim fileName As String 'ファイル名
'最初から月を進める
For ym = 0 To toYear * 12 + toMonth - (fromYear * 12 + fromMonth)
Folder = Format(DateSerial(fromYear, fromMonth + ym, 1), "yyyymm")
'ファイルを開く
fileName = Dir(strPath & Folder & "\" & "*.*")
While fileName <> ""
MsgBox fileName 'ここが実際の処理
fileName = Dir
Wend
Next
End Sub
お忙しいところ本当にありがとうございます!!
特定のフォルダを指定してそのフォルダ内のサブフォルダのファイルを順次処理していくこととしました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Windows 10 Windows10で、フォルダにあるすべてのファイルを、下層フォルダも含め一つの階層へ配置し直したい 3 2022/05/31 09:50
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- システム vba シートの追加について 2 2023/05/17 15:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
ファイル名と同名のフォルダを...
-
【マクロ】ファイル名の日付に...
-
あるフォルダの中にあるファイ...
-
会社のネットワーク上のファイ...
-
VBA 最新のフォルダ取得
-
VB6.0 SHCreateDirectoryExの...
-
ファイル名に特定の文字列を含...
-
フォルダを開いて、閉じるのプ...
-
言語[C#]..フォルダ選択ダイア...
-
VBA フォルダ名に特定の文字を...
-
エクセルのVBAで特定のフォルダ...
-
VB.NRT FolderBrowserDialogを...
-
[VBS] Unicodeの文字化けを防ぎ...
-
エクセルマクロで指定フォルダ...
-
バッチファイル フォルダを...
-
機種依存文字を含むフォルダ/フ...
-
ファイル名から該当フォルダへ移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
バッチファイルが保存されてい...
-
ファイル名と同名のフォルダを...
-
【マクロ】ファイル名の日付に...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
フォルダ内のPDFファイル名を変...
-
ディレクトリ名変更してコピー...
-
多量のファイルをフォルダに自...
-
Excelで指定したフォルダに保存...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
Excelのハイパーリンクについて...
-
あるフォルダーのファイルを違...
-
パス名に2バイト文字(マルチバ...
-
同一フォルダ内の別ブックから...
-
エクセルのマクロについて教え...
-
バッチファイルで指定フォルダ...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報