2015-12-14 135 views
1

我最终会寻找更复杂的东西,但我甚至无法使这个简单的版本工作。从Excel中的一个工作簿复制到另一个工作簿

它会打开其他文件,但它只是将第二个工作簿(其中包含应该复制的内容的宏)留空。

我已经尝试了一些其他“复制/粘贴工作簿”线程的建议,没有任何工作。

大多数给我一个“粘贴方法工作表类失败”的错误,我不知道如何解决,因为即使是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 
+0

是否运行从宏工作簿启用此代码或者是你想从.xlsx文件运行呢? – Alex4336

+0

从xlsm文件,所以它应该是宏启用。 – Rich

+0

您是否在下面测试R3uK的答案,因为我看不到任何代码错误。 – Alex4336

回答

0

当把从一个范围到另一个数据,你必须添加.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 
+0

对于我正在复制的这本书,这仍然只是空白而已。 – Rich

+0

他们是很大的工作簿吗? x.Sheets(“Sheet1”)中的数据是什么?Range(“A1:B5”)'? – R3uK

+0

我会将它们连接起来,但这只是我正在做的一个概念证明,它们很小。真正的事情将会相当巨大。 https://drive.google.com/file/d/0ByUxX8rRDJttZzVBaS1QM1U2ajQ/view?usp=sharing https://drive.google.com/file/d/0ByUxX8rRDJtta1l0dGhaUTZhNDA/view?usp=sharing – Rich

0

我想张贴此去帮助别人,因为有一吨是不是完全不同的线程正确,但足以让我迷惑。希望这可以在未来帮助其他人。

工作代码:

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 
相关问题