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

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

我在代码中有一个逻辑错误; 它运行,但它将select粘贴在错误的地方。

我无法引用这两个工作簿。

这是我的代码:

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 

使用PasteSpecial方法:

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

但是你最大的问题是你正在改变你的ActiveSheet到“数据”,而不是把它改回来。 根据我的代码,您不需要执行“激活”和“select”(假定您的button位于要复制到的工作表上)。

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

 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 

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