13

毎日1000以上のExcelファイルを受け取るフォルダーがありますが、それらはすべて同じ形式と構造です。私がやりたいことは、毎日ベースで 100 以上のファイルすべてに対してマクロを実行することですか?

これを自動化する方法はありますか? そのため、毎日 1000 以上のファイルに対して同じマクロを実行し続けることができます。

4

7 に答える 7

17

ファイルをマスター ワークブックに相対的な "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マクロでのすべての処理は、常に(現在開いているブック)のコンテキストで行うようにしてください。

免責事項: 簡潔にするために、考えられるすべてのエラー処理は省略されています。

于 2013-02-08T06:03:33.133 に答える
3

質問の一部は、1000 個のファイルでこれを実行するにはどうすればよいですか?... 1000 個のワークブックすべてにこのマクロを追加する必要がありますか?

これを行う 1 つの方法は、マクロをファイルの中心に追加することですPERSONAL.XLSB(拡張子が異なる場合があります)。このファイルは、Excel を起動するたびにバックグラウンドで読み込まれ、いつでもマクロを使用できるようになります。

最初は、PERSONAL.XLSB ファイルは存在しません。このファイルを自動的に作成するには、「ダミー」マクロの記録を開始し (スプレッドシートの左下にある記録ボタンを使用)、「個人用マクロ ブック」を選択して保存します。

Altマクロを記録した後、 +でVBA エディターを開くF11と、「ダミー」記録されたマクロを含む PERSONAL.XLSB ファイルが表示されます。

このファイルを使用して、開いている .xlsx ファイルに関係なく、常に使用できる一般的なマクロのロードを保存します。これらのマクロを独自のメニュー リボンに追加しました。

この一般的なマクロ ファイルの欠点の 1 つは、Excel の複数のインスタンスを起動すると、PERSONAL.XLSB ファイルが Excel インスタンス番号によって既に使用されているというエラー メッセージが表示されることです。1. この時点で新しいマクロを追加しない限り、これは問題ありません。

于 2013-02-08T08:17:51.040 に答える
0
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 フォルダーに保存しました

于 2016-06-02T06:39:47.190 に答える