Добрый день! Помогите новичку, пожалуйста. Есть 2 файла: 1.CopyPasteTest.xlsm 2.123.xlsx
В первом файле кнопка, при нажатии на которую должны скопироваться ячейки из второго файла в первый. Код:
Sub Button() Set objExcel = New Excel.Application Set wb = objExcel.Workbooks.Open("123.xlsx") Set ws = wb.Sheets(1) Set sh = ThisWorkbook.Sheets(1) sh.Range("A1") = ws.Range("A1") - ВОТ ТАК РАБОТАЕТ ws.Range("A1:E1").Copy Destination:=sh.Range("A1:E1") - А ВОТ ТАК ВЫДАЕТ ОШИБКУ wb.Close End Sub
Ошибка: 1004 Метод Copy из класса Range завершен неверно.
Справку курил, из нее и взято как копировать. Все равно, не работает.
Sub Button()
Dim objExcel As Application
Dim wb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
'Set objExcel = New Excel.Application
'Set wb = objExcel.Workbooks.Open("123.xlsx")
Set wb = Workbooks.Open("123.xlsx")
Set ws = wb.Sheets(1)
Set sh = ThisWorkbook.Sheets(1)
'sh.Range("A1") = ws.Range("A1") ' - ВОТ ТАК РАБОТАЕТ
ws.Range("A1:E1").Copy Destination:=sh.Range("A1:E1") ' - А ВОТ ТАК ВЫДАЕТ ОШИБКУ
wb.Close
End Sub
МатросНаЗебре, заработало! Спасибо! А как теперь скрыть открываемый файл? У меня скрывалось так: Set objExcel = New Excel.Application objExcel.Visible = False
а зачем его скрывать, если после копирования он закрывается? Может проще просто отключить мелькание экрана на время работы кода?
Код
Sub Button()
Dim objExcel As Application
Dim wb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
Application.ScreenUpdating = False 'отключаем обновление экрана
'Set objExcel = New Excel.Application
'Set wb = objExcel.Workbooks.Open("123.xlsx")
Set wb = Workbooks.Open("123.xlsx")
Set ws = wb.Sheets(1)
Set sh = ThisWorkbook.Sheets(1)
'sh.Range("A1") = ws.Range("A1") ' - ВОТ ТАК РАБОТАЕТ
ws.Range("A1:E1").Copy Destination:=sh.Range("A1:E1") ' - А ВОТ ТАК ВЫДАЕТ ОШИБКУ
wb.Close
Application.ScreenUpdating = True 'возвращаем обновление экрана
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...