Копирование и вставка данных с использованием кода VBA - PullRequest
13 голосов
/ 21 июля 2011

У меня есть кнопка в электронной таблице, которая при нажатии должна позволить пользователю открыть файл, затем скопировать столбцы 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

Ответы [ 2 ]

21 голосов
/ 21 июля 2011

Используйте метод PasteSpecial:

sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues

НО ваша большая проблема заключается в том, что вы меняете ActiveSheet на «Данные», а не возвращаете его обратно.Вам не нужно выполнять активацию и выбор согласно моему коду (предполагается, что ваша кнопка находится на листе, на который вы хотите скопировать).

1 голос
/ 09 января 2016

'Так что из этой дискуссии я думаю, что тогда это должен быть код.

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

'Дайте мне знать, если это правильно, или шаг был пропущен.Спасибо.

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