2017-04-15 63 views
1

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

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

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”工作簿中粘贴的单元格)。哪里不对?这两个文件都位于桌面上的同一个文件夹中。

+0

哪一行给出错误?我的猜测是提到''AllData'',但你应该告诉我们,这样我们就不必猜测(所有猜测都会有所不同)。 – YowE3K

+0

是的,我认为这是提到“AllData” – cwight

回答

1

我会后根据我的猜测这个答案错误是在该行称

InputFile.Sheets(“AllData”).Activate 

在您使用“AllData”其中,由于使用“智能引号”的,而不是正常的两倍线 - 引号标记,由VBA解释为变量名称,并将该变量的值用作Sheets集合的索引。但是,您从未声明该变量,也没有为其分配值。 Sheets集合接受一个数字或字符串参数作为索引,所以你可能说了类似“AllData” = 1“AllData” = "AllData",它会工作。

猜测是,你居然不打算使用一个变量作为索引和你想用的语句

InputFile.Sheets("AllData").Activate 

有性格"之间的巨大差异语法,以及智能引用字符"字符被VBA解释为字符串文字的开始/结束。 VBA以与诸如“a”,“b”,“c”等的字母相同的方式解释字符,因此可用于变量名称。

+0

谢谢你的回答。我有点困惑 - 我是否会说: – cwight

+0

谢谢你的回答。我有点困惑 - 我是否在说: 'InputFile.Sheets(“AllData”)。Activate'in wrong location?对此我深表歉意。作为参考,这是我使用的代码的来源:[链接](https://www.mrexcel.com/forum/excel-questions/783385-visual-basic-applications-copy-active-workbook-paste- closed-workbook.html) – cwight

+0

@cwight - 不,你的错误似乎是你使用的是一个名为“AllData”的变量而不是字符串文字“AllData”。 – YowE3K

相关问题