空のブックと複数のデータ ブックに保存された Excel マクロがあります。
現在、マクロ ファイルと各データ ファイルを個別に開き、キーボード ショートカットを使用してそれぞれのマクロを実行しています。
いずれかを使用して、それらを開かずにすべてのデータブックでマクロを実行する方法はありますか?
- バッチファイル、
- VBA/VB スクリプト、
- パワーシェル、
- または似たようなものですか?
空のブックと複数のデータ ブックに保存された Excel マクロがあります。
現在、マクロ ファイルと各データ ファイルを個別に開き、キーボード ショートカットを使用してそれぞれのマクロを実行しています。
いずれかを使用して、それらを開かずにすべてのデータブックでマクロを実行する方法はありますか?
これを行う 1 つの方法は、マクロをファイル PERSONAL.XLSB に追加することです。このファイルは、Excel を起動するたびにバックグラウンドで読み込まれます。最初は、PERSONAL.XLSB ファイルは存在しません。このファイルを自動的に作成するには、「ダミー」マクロの記録を開始し (スプレッドシートの左下にある記録ボタンを使用)、「個人用マクロ ブック」を選択して保存します。マクロを記録した後、VBA を開くことができます。 [Alt]+[F10] でエディターを開くと、「ダミー」マクロを含む PERSONAL.XLSB ファイルが表示されます。このファイルを使用して、常に利用可能な一般的なマクロのロードを保存します。これらのマクロを独自のメニュー リボンに追加しました。この一般的なマクロ ファイルの欠点の 1 つは、Excel の複数のインスタンスを起動すると、PERSONAL. XLSB ファイルは、Excel インスタンス番号によって既に使用されています。1. この時点で新しいマクロを追加しない限り、これは問題ありません。
他の方法、
Sub LoopAllWorkbooksOpened()
Dim wb As Workbook
For Each wb In Application.Workbooks
Call YourMacroWithWorkbookParam(wb)
Next wb
End Sub
Sub YourMacroWithWorkbookParam(wb As Workbook)
MsgBox wb.FullName
End Sub
マクロを personal.xls または masterfile に保持し、vba を使用してワークブックをループし、マクロを実行する前にそれらをアクティブにすることができます。私の知る限り、まだ vba で開く必要があります。
次のようなものを使用できます。
sub LoopFiles
Dim sFiles(1 to 10) as string 'You could also read this from a range in a masterfile
sFiles(1) = "Filename1.xls"
.
.
sFiles(10) = "Filename10.xls"
Dim wb as Workbook
Dim iCount as integer
iCount = ubound(sFiles)
Dim iCount2 as integer
For iCount2 = 1 to iCount
Workbooks(sFiles(iCount2)).open
Workbooks(sFiles(iCount2)).activate
Call YourMacro
Workbooks(sFiles(iCount2)).close
next iCount2
end sub