从Excel中的一个工作簿复制到另一个工作簿
我最终要做更复杂的事情,但我甚至无法得到这个简单的版本。
它会打开其他文件,但它只是留下第二个工作簿(与macros应该被复制到)的空白。
我已经尝试了其他“在工作簿之间复制/粘贴”线程的一些build议,没有任何工作。
大多数给我一个“工作表类错误的粘贴方法”错误,我不知道如何解决,即使PasteSpecial不解决它?
我对VBA来说比较陌生,需要为我的工作做些事情。 提前感谢任何帮助!
在我下面的示例代码中,我试图从CPWholeDocTest1.xlsx复制到CPWholeDocTest2.xlsm。
Sub CopyPasteRawData() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open("C:\Users\rnewma\Documents\Excel Projects\Test\CPWholeDocTest1.xlsx") Set y = Workbooks.Open("C:\Users\rnewma\Documents\Excel Projects\Test\CPWholeDocTest2.xlsm") 'Now, transfer values from x to y: y.Sheets("Test").Range("A1:B5").Value = x.Sheets("Sheet1").Range("A1:B5") 'Close x: 'x.Close End Sub
将数据从一个范围传输到另一个范围时,您必须添加.Value
或.Value2
以显式化!
( .Value
是默认属性,所以当你不指定它的时候是隐含的):
Sub CopyPasteRawData() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open("C:\Users\rnewma\Documents\Excel Projects\Test\CPWholeDocTest1.xlsx") Set y = Workbooks.Open("C:\Users\rnewma\Documents\Excel Projects\Test\CPWholeDocTest2.xlsm", ReadOnly:=False) DoEvents 'Now, transfer values from x to y: y.Sheets("Test").Range("A1:B5").Value = x.Sheets("Sheet1").Range("A1:B5").Value 'Close x: 'x.Close End Sub
我想发布这个帮助别人,因为有很多其他线程不是很正确,但足以让我迷惑。 希望这可以在未来帮助别人。
工作守则:
Sub CopyPasteRawData2() ' CopyPasteRawData Macro ' Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open("pathname of file you are copying from") Set y = ThisWorkbook 'Now, transfer values from x to y: y.Sheets("sheet you are copying to").Range("A1:B5").Value = x.Sheets("sheet you are copying from").Range("A1:B5").Value 'Close x: x.Close End Sub