将范围从活动工作簿复制到已关闭的工作簿,MAC OSX,ERROR

时间:2017-04-15 03:03:22

标签: excel vba macos excel-vba

用户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"工作簿中)开始粘贴的单元格。怎么了?这两个文件都存在于我桌面上的同一个文件夹中。

1 个答案:

答案 0 :(得分:1)

我会根据我的猜测发布这个答案,错误就在说

InputFile.Sheets(“AllData”).Activate

在该行中,您使用“AllData”,由于使用“智能引号”而不是普通的双引号,VBA将其解释为变量名称,并使用该变量的值作为索引Sheets集合。但是,您从未声明过该变量,也没有为其赋值。 Sheets集合接受数字或字符串参数作为索引,因此您可以说“AllData” = 1“AllData” = "AllData"之类的内容,并且它会起作用。

我的猜测是你实际上并不打算使用变量作为索引而你打算使用语句

InputFile.Sheets("AllData").Activate

字符"与智能引号字符之间存在巨大的语法差异。 VBA将"字符解释为字符串文字的开头/结尾。 VBA以与“a”,“b”,“c”等字母相同的方式解释字符,因此可以在变量名中使用。