У меня проблема с Excel VBA: я пытаюсь открыть существующий шаблон пустой книги (pn), скопировать данные из существующего листа (wb) и вставить его в «pn», но я продолжаюполучение всех видов ошибок, таких как ошибка 400, подстрочный индекс вне диапазона и постоянное замораживание.
Я пробовал код со многими вариантами, но в основном (и в моей последней попытке ниже) ошибка происходит в следующемline:
Workbooks (pn) .Sheets ("data"). Выберите
Это связано с тем, что VBA правильно получает имя открытого файла или переключается между книгами?Как правильно переключаться между различными книгами и копировать / вставлять данные?
РЕДАКТИРОВАТЬ: также, при запуске кода в режиме отладки с помощью («Шаг в») он работает просто отлично.Я заметил, что реальное открытое имя файла появляется только тогда, когда код ожидает полного открытия рабочей книги или когда я нажимаю alt + tab в ней, иначе его имя продолжает отображаться как «Excel», и возникает ошибка!
'opens template
fileName = Application.GetOpenFilename("Excel-files,*.xlsx", 1, "OPEN TEMPLATE", , False)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error GoTo Err1
Workbooks.Open (fileName)
pn = ActiveWorkbook.Name
'copy and paste between workbooks
Windows(wb).Activate
Workbooks(wb).Sheets("Info").Select
Workbooks(wb).Worksheets("Info").Range("A4:Z1000").Select
Selection.Copy 'Destination:=Workbooks(pn).Sheets("data").Cells(3, 1)
Workbooks(pn).Sheets("data").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False