2

これは、ユーザーが複数のファイルを選択して、マスター ファイルのヘッダーと比較し、データをコピーして貼り付けることができる私のコードです。問題は、配列からワークブックを参照してコードを実行する方法がわからないことです。一度に 1 つのワークブックです。以前は、単一のワークブックに対して activate ステートメントを使用していましたが、配列内の複数のワークブックに対してそれを行う方法がわかりません。書籍名は arrNames に格納されます。Temp calc は、すべてのデータを保存する必要があるシートです。助言がありますか ?

ありがとう、

マシュー

サブテスト()

     Dim lastCol, lastRow As Long, k As Long, a As Variant, b As Variant, cmpRng As Range
    Dim mastCol As Long, mastRng As Range, n As Long
    Dim Wbk As Workbook
    Dim fileone
     Dim SelectedFiles As Object
     Dim arrNames As Variant
     Dim indx As Long

    Application.ScreenUpdating = False

Sheets("Temp Calc").Select
'Clear existing sheet data except headers
    Rows(1).Offset(1, 0).Resize(Rows.Count - 1).ClearContents


    arrNames = Application.GetOpenFilename(Filefilter:="Workbooks (*.xlsx),*.xlsx", MultiSelect:=True)
       For i = 1 To UBound(arrNames, 1)


    Worksheets("Temp Calc").Select

       lastCol = Worksheets("Temp Calc").Cells(1, Columns.Count).End(xlToLeft).Column
       lastRow = Worksheets("Temp Calc").Cells(Rows.Count, 1).End(xlDown).Row

    Set cmpRng = Range(Cells(1, 1), Cells(1, lastCol))
    a = cmpRng
    mastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    Set mastRng = Range(Cells(1, 1), Cells(1, mastCol))
    b = mastRng

    For k = 1 To lastCol
        For n = 1 To mastCol
            If UCase(a(1, k)) = UCase(b(1, n)) Then

ここでは、ワークブックを配列で開くためのコードが必要です

Worksheets("Sheet1").Range(Cells(2, n), Cells(lastRow, n)).Copy
                Windows("Dashboard_for_Roshan.xlsm").Activate
                Worksheets("Temp Calc").Select
                Cells(2, k).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False

                Exit For
            End If
        Next
    Next


        Next

    'Else

    'End If

    Application.ScreenUpdating = True

    Exit Sub
        'Next
End Sub
4

1 に答える 1