用户Peh给了我很好的代码,可以将数据从已关闭的工作簿复制到打开的工作簿,但现在我想反过来。我想要一个包含公式和值的打开工作簿,我想将这些值作为值粘贴到已关闭的工作簿中。我想从" AllData"中复制范围K1
。我打开的工作簿中的选项卡,用于粘贴从已关闭工作簿的Sheet1中的Sub CopynPasteWrkBk()
Dim InputFile As Workbook
Dim OutputFile As Workbook
Dim Inputpath As String
Dim Outputpath As String '
' Set path for Input & Output
fileInputpath = "/Users/cie/Desktop/macrotest/"
Outputpath = "/Users/cie/Desktop/macrotest/"
'## Open both workbooks first:
Set InputFile = ActiveWorkbook
Set OutputFile = Workbooks.Open(Outputpath & "archive.xlsx")
'Now, copy what you want from InputFile:
InputFile.Sheets(“AllData”).Activate
InputFile.Sheets(“AllData”).Range("B36:K36").Copy
'Now, paste to OutputFile worksheet:
OutputFile.Sheets("Sheet1").Activate
OutputFile.Sheets("Sheet1").Range("k1").PasteSpecialOutputFile.Save
'Close InputFile & OutputFile:
InputFile.Close
OutputFile.Close
End Sub
开始的值" archive.xlsx"。
这是我目前的代码(来自互联网):
runtime error 9 subscript out of range
当我在我的活动工作簿中执行此代码时,它会成功打开" archive.xlsx",给我K1
并输出错误,然后我看到它已选择了选择{{ 1}}在我的活动工作簿中(我想要在" archive.xlsx"工作簿中)开始粘贴的单元格。怎么了?这两个文件都存在于我桌面上的同一个文件夹中。
答案 0 :(得分:1)
我会根据我的猜测发布这个答案,错误就在说
InputFile.Sheets(“AllData”).Activate
在该行中,您使用“AllData”
,由于使用“智能引号”而不是普通的双引号,VBA将其解释为变量名称,并使用该变量的值作为索引Sheets
集合。但是,您从未声明过该变量,也没有为其赋值。 Sheets
集合接受数字或字符串参数作为索引,因此您可以说“AllData” = 1
或“AllData” = "AllData"
之类的内容,并且它会起作用。
我的猜测是你实际上并不打算使用变量作为索引而你打算使用语句
InputFile.Sheets("AllData").Activate
字符"
与智能引号字符“
和”
之间存在巨大的语法差异。 VBA将"
字符解释为字符串文字的开头/结尾。 VBA以与“a”,“b”,“c”等字母相同的方式解释“
和”
字符,因此可以在变量名中使用。