从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