
複数のファイルのエクセルファイルに対し、同じ処理を行うマクロを教えてほしいです。
処理するファイル数が一定でないため、現在はDo While~Loop構文を用い強引に処理しています。
しかし、この方法では処理が終わる(アクティブファイルが無くなる)とエラーメッセージが出るため、煩わしいです。
Do Until構文で、終了条件を指定したらよさそうなのですが、どのように書けばいいのかわかりません。
現在記述しているものは以下です。
--------------------------------------------------------
Sub 連続処理()
Dim BookName As String
Dim PathName As String
PathName = "D:\A1\連続処理\"
BookName = Dir(PathName & "*.xls")
Do Until BookName = ""
Workbooks.Open PathName & BookName
BookName = Dir()
Loop
Do While (1)
・
・(処理作業を行うマクロ)
・
Workbooks(ActiveWorkbook.Name).Close savechanges:=True
Loop
End Sub
No.2ベストアンサー
- 回答日時:
この質問にはどの範囲のフォルダなどのファイルを対象にするのか書かないと、1つのフォルダなら
Sub Test01()
Dim BookName As String
Dim PathName As String
PathName = "C:\Documents and Settings\XXX\My Documents\"
BookName = Dir(PathName & "*.xls")
Do Until BookName = ""
(BookNameブックオープン)
( 処理)
BookName = Dir()
Loop
(もしあれば終わり処理)
End Sub
でよいのでは。
ーー
Do While (1)
・
・(処理作業を行うマクロ)
・
Workbooks(ActiveWorkbook.Name).Close savechanges:=True
Loop
は不要ではないのかな。
ありがとうございます。
ある特定のフォルダに納めたファイル全ての処理を行いたかったんです。
提示された式で無事走りおえました。
中に入れ込めばよかったのですね。
No.3
- 回答日時:
Sub try()
Dim Fname As String
Fname = Dir("R:\*.xls")
Do Until Fname = ""
Workbooks.Open "R:\" & Fname
'何かの処理
Debug.Print Fname
Workbooks(Fname).Close True
Fname = Dir()
Loop
End Sub
と言う感じの事とは違いますか?
ありがとうございます。
No.2の方と同じやり方ですよね。
Debug.Print Fnameというのは、データ保存する前に、念のためファイル名を返して置くという認識でいいのでしょうか。
No.1
- 回答日時:
FileSystemObjectというのを使ってみてはどうですか。
Dim FSO As New FileSystemObject
Dim folder As Folder
Dim file As File
Dim PathName As string
PathName = "D:\A1\連続処理\"
Set folder = FSO.GetFolder(PathName)
For Each file In folder
'ファイルの処理
Workbooks.Open(file.name)
.....
Next file
ありがとうございます。
今回はNo.2の方の方法で解決することができました。
ですが、貴方が提示されたFSOオブジェクトを利用すると、視覚的に非常にわかりやすいですね。
次回、同じようなケースがありましたら、利用したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF文に時間(何時から何時ま...
-
【C#/Java?】try-catchでcatch...
-
変数を使用したFunctionから戻...
-
特定のファイルを他のプロセス...
-
vbaのエラー対応(実行時エラー...
-
VBAでエラー処理を行いたいです
-
For ~ Next の使い方
-
【C#】Page_Loadさせない方法に...
-
ASP.netにて質問です。
-
ドリブン??
-
C++ Builder6.0 TNMFTPコンポー...
-
Word VBA。各マクロの間に待ち...
-
特定の名前のオートシェイプの...
-
PL/SQL データ型チェックについて
-
エクセルVBAでプロシージャ名を...
-
複数のファイルに対し同じ処理...
-
Linux(CentOS)にでcronとシェル...
-
DataSetの更新時のエラーについ...
-
Excel VBA セルの名前があるか...
-
StatusStripの表示が更新されな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
マクロで、次のコードへ行く前...
-
ExcelのVBAで、選択したファイ...
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
どうやってもFor文を抜けてしま...
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
【VBA】エラー処理で別プロシー...
-
フォルダのアクセス権確認について
-
VBA For Each 〜 複数条件について
-
StatusStripの表示が更新されな...
-
【C#】Page_Loadさせない方法に...
おすすめ情報