使用VBA代码复制和粘贴数据

时间:2011-07-21 15:38:17

标签: excel vba excel-vba excel-2010

我在电子表格上有一个按钮,当按下该按钮时,应允许用户打开文件,然后复制电子表格“数据”的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 个答案:

答案 0 :(得分:21)

使用PasteSpecial方法:

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

但是你的大问题是你将ActiveSheet更改为“数据”而不是将其更改回来。根据我的代码,您不需要执行激活和选择(这假设您的按钮位于要复制到的工作表上)。

答案 1 :(得分:1)

'所以从这个讨论中我认为这应该是代码。

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

'让我知道这是否正确或错过了一步。谢谢。