Я пытаюсь импортировать несколько листов XLSX/XLS в лист «temp» моей основной книги, каждый материал для книг должен быть добавлен после последней записи.Excel VBA - импортируйте несколько рабочих листов xlsx и добавьте в лист основной книги
Это хорошо работает только с одним файлом, но я не могу понять, как логика зацикливается на всех выбранных книгах. Кроме того, учитывая производительность и скорость, разумно открыть все выбранные книги после их выбора или лучше открыть их после завершения импорта предыдущего файла?
Поблагодарите вашу помощь.
EDIT: Чтобы быть более точным, проблема со сценарием является частью, где я должен просматривать все открытые книги. Предложения кто-нибудь?
For Each Workbooks In lngCount
With Workbooks
.Sheets(1).Cells.Copy Destination:=MasterWB.Sheets("temp").Range("A65536").End(xlUp).Offset(1, 0)
.Close False
End With
Next
Полный VBA Код:
Sub import_XLS()
Dim wb As Workbook
Dim lngCount As Long
' speed up by turning screenupdating off
Application.ScreenUpdating = False
' set workbooks
Set MasterWB = ActiveWorkbook
With ActiveWorkbook.Sheets("temp")
.Visible = True
.Cells.Delete
End With
' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = ""
.Title = "Please select the converted User Activity files for import"
.Filters.Add "Excel Files", "*.xls; *.xlsx", 1
'.Filters.Add "Excel Files", "*.xls", 1
.AllowMultiSelect = True
If .Show = -1 Then
' Open the files
For lngCount = 1 To .SelectedItems.Count
Workbooks.Open .SelectedItems(lngCount)
Next lngCount
Else
Exit Sub
End If
End With
' open selected workbook in read only and copy all cells of worksheet 1
For Each Workbooks In lngCount
With Workbooks
.Sheets(1).Cells.Copy Destination:=MasterWB.Sheets("temp").Range("A65536").End(xlUp).Offset(1, 0)
.Close False
End With
Next
' hide temp sheet, close workbook without saving changes and free memory
'MasterWB.Sheets("temp").Visible = False
'wb.Close False
Set wb = Nothing
End Sub
сделали вы действительно получили, что код работает? В моем VBE у него есть некоторые ошибки «компилятора», например, в строке «Для каждой книги в строке lngCount», где он не позволит вам перебирать что-либо, кроме коллекций или массивов. Я также предлагаю вам добавить оператор 'Option Explicit' в самом начале вашего модуля, чтобы он заставил вас объявить каждую переменную, которую вы используете. небольшая дополнительная работа будет вознаграждена, позволяя вам определить и устранить несоответствие каждого типа. – user3598756
В самом начале я заявлял, что инструкция «Для каждой книги» не работает, вот почему я здесь для справки :) – Armitage2k
ну, вы можете исправить и отладить ваш код в соответствии с моими комментариями. и, наконец, обновить его в поле кода вместе с возможными проблемами, оставленными – user3598756