Копирование и вставка данных с использованием кода VBA
У меня есть кнопка на электронной таблице, которая при нажатии должна позволить пользователю открыть файл, а затем скопировать столбцы A-G электронной таблицы "Данные", а затем вставить данные из этих столбцов на текущем листе.
У меня есть логическая ошибка в коде; он запускается, но он вставляет выделение в неправильном месте.
У меня возникают проблемы с ссылкой на две книги.
Вот мой код:
Sub Button1_Click()
Dim excel As excel.Application
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set excel = CreateObject("excel.Application")
Set wb = excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Select
Selection.Copy
Range("A1").Select
ActiveSheet.Paste
wb.Close
End Sub
Ответы
Ответ 1
Используйте метод PasteSpecial:
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
НО ваша большая проблема заключается в том, что вы меняете свой ActiveSheet на "данные" и не меняете его. Вам не нужно делать Активировать и Выбрать, согласно моему коду (это предполагает, что ваша кнопка находится на листе, который вы хотите скопировать).
Ответ 2
'Итак, из этой дискуссии я думаю, что тогда это должен быть код.
Sub Button1_Click()
Dim excel As excel.Application
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show
Set excel = CreateObject("excel.Application")
Set wb = excel.Workbooks.Open(f.SelectedItems(1))
Set sht = wb.Worksheets("Data")
sht.Activate
sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
wb.Close
End Sub
'Сообщите мне, если это правильно или был пропущен шаг. Спасибо.