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


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

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

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

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

回答の条件
  • 1人2回まで
  • 登録:2008/09/24 11:20:43
  • 終了:2008/09/26 16:36:58

回答(3件)

id:airplant No.1

airplant回答回数220ベストアンサー獲得回数492008/09/24 14:21:18

ポイント35pt

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

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

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

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

id:miku1973

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

早速やってみます!

ありがとうございます!

2008/09/25 15:26:58
id:fester No.2

fester回答回数124ベストアンサー獲得回数202008/09/24 13:27:58

ポイント45pt

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

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

参考になりますか。


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

id:miku1973

かなりよさげです!

ありがとうございます!

2008/09/26 13:08:34
id:newta No.3

newta回答回数68ベストアンサー獲得回数72008/09/24 11:43:27

FileSearchオブジェクトや↓

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


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

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


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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません