我正在尝试从 Excel 的一个工作簿中选择一些数据,将其复制并粘贴到另一个工作簿中。但是当我在 VBA 中运行代码时,它什么也没做。
代码如下:
Sub foo3()
Dim x As Workbook
Dim y As Workbook
Dim vals As Variant
'## Open both workbooks first:
Set x = Workbooks.Open("<Path of the origin\Archive.xslm>")
Set y = Workbooks.Open("<Destination Path\Archive1.xslm>")
'Store the value in a variable:
vals = x.Sheets("Plan1").Range("A1").Value
'Use the variable to assign a value to the other file/sheet:
y.Sheets("Plan1").Range("A1").Value = vals
'Close x:
x.Close
y.Close
End Sub
有人能帮我找到解决方案吗?谢谢!
答案1
替换掉你的代码:
设置 x = Workbooks.Open(“”)
直接从目的地书的打开单元格中:
='C:\Users\youtheuser\Desktop\[bookC.xlsx]Sheet1'!$A$1
或“动态”
='C:\Users\youtheuser\Desktop\[bookC.xlsx]Sheet1'!A1
这里的所有都是它的!
答案2
Excel 具有内置宏录制功能,可以根据您的操作生成 VBA 代码。调试此问题的最佳方法是录制一个宏,其中“手动”执行您要在 VBA 中编写的脚本,然后查看生成的代码。
始终确保录制的宏确实执行您正在做的事情 - 它不是 100% 准确的。
如果运行它生成的宏可以达到您想要的效果,您可以在创建宏的工作簿中的 VBA 编辑器中查看它的代码。请注意,它不必是您代码摘录中感兴趣的两个工作簿之一,它可以是另一个与它们无关的工作表。
根据自动生成的代码的编写方式,您应该能够看到自己代码中的问题。如果没有,您可以直接使用它(将其移到函数中,而不是宏中)。
你可以找到很多关于录制宏的指南。这里有一个简单指南适用于 Excel 2013。