从Excel中的一个工作簿复制到另一个工作簿

时间:2015-12-14 12:57:10

标签: excel vba excel-vba copy-paste

我最终会选择更复杂的东西,但我甚至无法让这个简单的版本工作。

它将打开其他文件,但它只留下第二个工作簿(具有应该被复制的宏的那个)空白。

我已经尝试过其他一些建议"在工作簿之间复制/粘贴"线程,没有任何工作。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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