【问题标题】:Copy range from an active workbook to a closed workbook, MAC OSX, ERROR从活动工作簿复制范围到关闭的工作簿,MAC OSX,错误
【发布时间】:2017-04-15 03:03:21
【问题描述】:

用户 Peh 给了我很棒的代码,可以将数据从关闭的工作簿复制到打开的工作簿,但现在我想做相反的事情。我想要一个带有公式和值的打开工作簿,我想将这些作为值复制粘贴到一个封闭的工作簿中。我想从我打开的工作簿的“AllData”选项卡中复制范围 B36:K36 以粘贴名为“archive.xlsx”的已关闭工作簿的 Sheet1 中以 K1 开头的值。

这是我当前的代码(来自互联网):

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 并出现错误,然后我看到它在我的活动工作簿中选择了K1(其中是我要在“archive.xlsx”工作簿中开始粘贴的单元格)。怎么了?这两个文件都位于我桌面上的同一个文件夹中。

【问题讨论】:

  • 哪一行给出了错误?我的猜测是提到 “AllData” 的那个,但你应该告诉我们,这样我们就不必全都猜测(并且全都猜测不同的东西)。
  • 是的,我认为是提到“AllData”的那个

标签: vba macos excel


【解决方案1】:

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

InputFile.Sheets(“AllData”).Activate

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

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

InputFile.Sheets("AllData").Activate

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

【讨论】:

  • 感谢您的回答。我有点困惑 - 我是不是说:
  • 感谢您的回答。我有点困惑 - 我是否将“InputFile.Sheets(“AllData”).Activate' 放在错误的位置?抱歉,我对此如此密集。作为参考,这是我正在使用的代码的来源:[link] (mrexcel.com/forum/excel-questions/…)
  • @cwight - 不,您的错误似乎是您使用了一个名为 “AllData” 的变量,而不是字符串文字 "AllData"
  • @cwight - 如果你想使用字符串文字"AllData"(我怀疑你这样做),请使用它并且不要使用变量“AllData”。因此,只需编辑您使用变量的两个位置来使用字符串文字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多