毎日1000以上のExcelファイルを受け取るフォルダーがありますが、それらはすべて同じ形式と構造です。私がやりたいことは、毎日ベースで 100 以上のファイルすべてに対してマクロを実行することですか?
これを自動化する方法はありますか? そのため、毎日 1000 以上のファイルに対して同じマクロを実行し続けることができます。
ファイルをマスター ワークブックに相対的な "Files" ディレクトリに置くと仮定すると、コードは次のようになります。
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.Path & "\Files\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Sub DoWork(wb As Workbook)
With wb
'Do your work here
.Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub
この例DoWork()
は、すべてのファイルに適用するマクロです。wb
マクロでのすべての処理は、常に(現在開いているブック)のコンテキストで行うようにしてください。
免責事項: 簡潔にするために、考えられるすべてのエラー処理は省略されています。
質問の一部は、1000 個のファイルでこれを実行するにはどうすればよいですか?... 1000 個のワークブックすべてにこのマクロを追加する必要がありますか?
これを行う 1 つの方法は、マクロをファイルの中心に追加することですPERSONAL.XLSB
(拡張子が異なる場合があります)。このファイルは、Excel を起動するたびにバックグラウンドで読み込まれ、いつでもマクロを使用できるようになります。
最初は、PERSONAL.XLSB ファイルは存在しません。このファイルを自動的に作成するには、「ダミー」マクロの記録を開始し (スプレッドシートの左下にある記録ボタンを使用)、「個人用マクロ ブック」を選択して保存します。
Altマクロを記録した後、 +でVBA エディターを開くF11と、「ダミー」記録されたマクロを含む PERSONAL.XLSB ファイルが表示されます。
このファイルを使用して、開いている .xlsx ファイルに関係なく、常に使用できる一般的なマクロのロードを保存します。これらのマクロを独自のメニュー リボンに追加しました。
この一般的なマクロ ファイルの欠点の 1 つは、Excel の複数のインスタンスを起動すると、PERSONAL.XLSB ファイルが Excel インスタンス番号によって既に使用されているというエラー メッセージが表示されることです。1. この時点で新しいマクロを追加しない限り、これは問題ありません。
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.Path & "\C:\Users\20098323\Desktop\EXCL\"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Sub DoWork(wb As Workbook)
With wb
'Do your work here
.Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub
このコードの実行中に、不適切なファイル名または番号が表示されます。すべてのファイルを ("\C:\Users\20098323\Desktop\EXCL\") EXCL フォルダーに保存しました