人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelのVBAについて質問いたします。

今、あるフォルダ(●)内にあるCSVファイル(■)を加工するマクロを組んであります。
このマクロは完成しています。

今、このファイルを加工していくマクロを、複数あるすべてのCSVファイルに対して順に実行していくようにしたいのですが、どのように記述すればよいでしょうか?

どうぞよろしくお願い致します。

???
ちなみに、●のフォルダは複数あり、ケースによってフォルダ名もフォルダ数も変わります。■のCSVファイルは各フォルダ内に常に8ファイルあり、ファイル名も8種類でこれは固定です。

●質問者: yoshifuku
●カテゴリ:コンピュータ
✍キーワード:CSV Excel VBA ファイル フォルダ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● airplant
●35ポイント

既に同じ回答が出ていると思いますが、、、

単にマクロの中で指定の文字毎に繰り返しということであれば、次のような感じでできます。

Option Explicit

Sub a()
 Dim sDirs As String
 Dim vDir As Variant
 Dim sTrgDir As Variant
 
  '固定なら下記。inputboxで読んでも良い
 sDirs = "C:\a\b,C:\ccc,D:\ddd"
 vDir = Split(sDirs, ",")
 
 For Each sTrgDir In vDir
  'ここに今までのメインロジックを書く
  ' sTrgDirがそれぞれのディレクトリ(●)
  ' ■は今までと同じ記載をしておく
 MsgBox (sTrgDir)
 Next
End Sub

もしかして、全然的外れだったでしょうか?

◎質問者からの返答

遅くなって申し訳ありません。

早速やってみます!

ありがとうございます!


2 ● fester
●45ポイント

指定フォルダ中のファイル名を列挙するサンプルです。

(サブフォルダ中のものも対象)

参考になりますか。


Option Explicit

Dim fs

'チェック
Public Sub CheckMain()
 
 Set fs = CreateObject("Scripting.FileSystemObject")

  '処理を実行
  '[C:\hoge\]中に、対象のフォルダが存在する場合
 Call checkFolders("C:\hoge")
 
 Set fs = Nothing

End Sub

'フォルダのチェック
Private Sub checkFolders(ByVal folderPath)
 Dim objFolder, objSubFolder
 Set objFolder = fs.GetFolder(folderPath)

  'フォルダ中のすべてのサブフォルダをチェック
 For Each objSubFolder In objFolder.SubFolders
 Call checkFolders(objSubFolder.Path)
 Next
  'フォルダ中のファイルを列挙
 Call checkFiles(folderPath)

End Sub

'フォルダ中のファイルを列挙
Private Sub checkFiles(ByVal folderPath)
 Dim objFolder, objFile
 Set objFolder = fs.GetFolder(folderPath)
 For Each objFile In objFolder.Files
  'フォルダ名を出力
 Debug.Print objFile.Name
 Next
End Sub

◎質問者からの返答

かなりよさげです!

ありがとうございます!


3 ● newta
●0ポイント

FileSearchオブジェクトや↓

http://officetanaka.net/excel/vba/tips/tips36.htm


Scripting.FileSystemObjectオブジェクトを使う↓

http://officetanaka.net/excel/vba/filesystemobject/folder.htm#Su...


と出来るんじゃないでしょうか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ