【发布时间】:2020-09-16 00:54:58
【问题描述】:
因此,此宏的目标是打开特定文件,然后从该文件复制并粘贴回存储宏的原始工作簿中。
值得注意的项目使这个宏有点独特:
工作簿 A (wbDestination) - 一个多工作表 excel,其中将存储宏以及将粘贴工作簿 B 上的信息。工作簿 B 的文件路径的位置将每月更改,因此我创建了一个函数在这个工作簿A中,宏将能够成功定位文件路径,以满足文件路径位置的每月变化。我需要将工作簿 B 中的源数据粘贴到工作簿 A 上的“Sheet2”中。工作簿 B 的文件路径位置位于工作簿 A 中名为“宏”的工作表的单元格 C2 中。
工作簿 B (wbSourceData) - 一个多工作表 Excel,其中将保留我需要复制并粘贴到工作簿 A 中的源数据。我将复制的源数据位于第二个工作表上。
Sub CopyPaste()
Dim wbSourceData As Workbook
Dim wbDestination As Workbook
Dim wsSourceData As Worksheet
Dim wsDestination As Worksheet
Dim strFName As String
Set wbDestination = ThisWorkbook
Set wsDestination = wbDestination.Sheets("Sheet2")
strFName = wbDestination.Worksheets("Macros").Range("C2").Value
Set wbSourceData = Workbooks.Open(strFName)
Set wsSourceData = wbSourceData.Worksheets(2)
wsSourceData.Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
wsDestination.Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues
wbSourceData.Close SaveChanges:=False
End Sub
还有一些需要注意的地方。我成功地在这个函数中打开了工作簿 B,但是当我尝试复制数据时宏死了。我在“运行时错误'1004':范围类的选择方法失败”中遇到的错误。我还想在工作簿 A 上使用范围选择函数 xlToRight(两次)和 xlDown,因为此源数据的行数会每月变化,这是获取整个范围的最佳方式。我需要将工作簿 B 中的源数据作为粘贴值粘贴回工作簿 A。
我是 VBA 的初学者,所以无论需要什么来修复这个宏都可以请 ELI5,谢谢!我真的很感激!
【问题讨论】: