2

フォルダに存在するすべてのファイルを開くコードを取得できました。ここで、これらのファイルに対してマクロ(donemovementReportと呼ばれる)を1つずつ実行したいのですが、ファイルを保存してから次のファイルで実行するのと同じです。

マクロdonemovementreportは、これらの開いているシートのすべてのデータをテンプレートに貼り付けます。実際のデータを含む開いたワークブックではなく、このタンプレートを保存したいと思います。

何かアイデアを持っている人はいますか?

Sub OpenAllWorkbooks()
Set destWB = ActiveWorkbook
Dim DestCell As Range
FileNames = Application.GetOpenFilename( _
        filefilter:="Excel Files (*.csv*),*.csv*", _
        Title:="Select the workbooks to load.", MultiSelect:=True)
If IsArray(FileNames) = False Then
    If FileNames = False Then
        Exit Sub
    End If
End If
For n = LBound(FileNames) To UBound(FileNames)
    Set wb = Workbooks.Open(fileName:=FileNames(n), ReadOnly:=True)

 Next n

 'Dim i As Integer
 'i = ActiveWorkbook.AcceptAllChanges


 'For i = 1 To ActiveWorkbook




 Call donemovementReport

'Next i

 End Sub
4

1 に答える 1

5

入力を正しく理解している場合は、開いているすべてのワークブックをループする必要があります。これは、Workbooksコレクションを使用して実現できます。そのためには、次のコードを使用します。

Dim wb As Workbook

For Each wb In Workbooks

    wb.AcceptAllChanges
    Call donemovementReport

Next wb

必要に応じて間のコードを変更するFor...Nextか、さらに入力を提供します。

VBA でのワークブックの参照について詳しくは、 http ://www.techrepublic.com/blog/10things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/967 (上記のコードは itemそこにリストされている10のうち3つ)。

于 2013-01-19T08:41:03.693 に答える