我在电子表格上有一个按钮,当按下该按钮时,应允许用户打开文件,然后复制电子表格“数据”的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
答案 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
'让我知道这是否正确或错过了一步。谢谢。