13

我在电子表格上有一个按钮,按下该按钮时,应允许用户打开文件,然后复制电子表格“数据”的 AG 列,然后将这些列中的数据粘贴到当前工作表上。

我的代码有逻辑错误;它运行,但它将选择粘贴到错误的位置。

我无法参考这两个工作簿。

这是我的代码:

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
4

2 回答 2

21

使用 PasteSpecial 方法:

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

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

于 2011-07-21T16:02:10.140 回答
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

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

于 2016-01-09T06:54:24.913 回答