从一个工作簿复制macros启用工作表到另一个运行时错误“1004”

我正在尝试制作一个macros,它允许我将这个非常常用的工作表直接放到我们需要的文件中。这是一个常用的工作表,我希望能够快速,轻松地插入现有文档以便复制并经常使用。

我收到:运行时错误“1004”:Excel无法访问“垃圾”。 该文件可能是只读的或encryption的。

这个代码是从堆栈溢出的另一个解决scheme修改,以便在我希望的任何文档全局使用。 (这是这里的最终目标)代码如下:

Sub foo() Dim x As Workbook Dim y As Workbook Dim z As String z = ActiveWorkbook.Path Dim WS As Worksheet Sheets.Add.Name = "Finance" '## Open both workbooks first: Set x = Workbooks.Open("Desired worksheet file path") Set y = Workbooks.Open(z) 'Now, copy what you want from x: x.Sheets("Finance1").Range("A1:G12").Copy 'Now, paste to y worksheet: y.Sheets("Finance").Range("A1:G12").PasteSpecial 'Close x: x.Close End Sub 

在错误的时候,这两个文件都是打开的。

ActiveWorkbook.Path提供了activeworkbook的path,您应该将文件添加到它。 喜欢这个:

Set y = Workbooks.Open(z & "\fileSample.xlsx")

还有一个错误的选项 – 如果ActiveWorkbook没有保存,那么它不会返回任何东西。 因此,像这样检查: If len(activeworkbook.path)>0 then

Thec代码将是这样的。

 Sub foo() Dim x As Workbook Dim y As Workbook Dim z As String, FileName1 As String, FileName2 As String z = ThisWorkbook.Path & "\" Dim WS As Worksheet FileName1 = "test1.xlsx" FileName1 = "test2.xlsx" '## Open both workbooks first: Set x = Workbooks.Open(z & FileName1) Set y = Workbooks.Open(z & FileName2) 'Now, copy what you want from x: x.Sheets("Finance1").Range("A1:G12").Copy y.Sheets("Finance").Range("A1") x.Close End Sub