Открывать файлы из массива - PullRequest
0 голосов
/ 21 января 2019

Я написал код, в котором я хочу, чтобы пользователь выбрал несколько файлов, через которые будет проходить код.

Я не могу заставить цикл работать, поскольку не правильно определяю имя.

Sub RFPDataimporttest() 'select multiple files
    Dim Files As Workbook
    Dim Fname As Variant
    Dim SrcWbk As Workbook
    Dim DestWbk As Workbook
    Dim i As Integer

    Set DestWbk = ThisWorkbook
    'choose files and define them as array
    Fname = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select alla RFP filer från leverantörer", MultiSelect:=True)
    If IsArray(Fname) Then
        For i = LBound(Fname) To UBound(Fname)

            'this where i have a problem. how do i open each file in an array?
            Set SrcWbk = Workbooks.Open(Fname)

            SrcWbk.Sheets("1. General Information").Range("L8").Copy
            With DestWbk.Worksheets("Sheet1").Cells(2, Columns.Count).End(xlToLeft).Offset(-1, 1)
               .PasteSpecial Paste:=xlPasteColumnWidths
               .PasteSpecial Paste:=xlPasteValues
            End With

            SrcWbk.Sheets("2. Product information").Range("Z1:AB91").Copy
            With DestWbk.Worksheets("Sheet1").Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
                .PasteSpecial Paste:=xlPasteColumnWidths
                .PasteSpecial Paste:=xlPasteValues
            End With

            SrcWbk.Close False

        Next i
    End If

End Sub

1 Ответ

0 голосов
/ 21 января 2019

Результатом является массив - вы уже проверяете это и перебираете его. Просто используйте i в качестве индекса:

  Set SrcWbk = Workbooks.Open(Fname(i))

(обратите внимание, что результатом является даже массив, когда пользователь выбирает только один файл, поэтому код будет работать и для этого случая)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...