首页 > 解决方案 > 跨工作簿复制单元格不像以前那样工作

问题描述

我在以前的宏中使用了相同的子程序,它工作得很好,但现在它根本行不通。

Public inputFile, outputFile as Worksheet

sub copy()

    Set inputFile = excel.Workbooks.Open(get_file(".xlsb", fullpath:=True))
    Set outputFile = Workbooks("Sales_Report.xlsm")


    inputFile.Sheets("Planilha1").Activate 'error: Method or data member not found (highlights ".Sheets")
    inputFile.Sheets("Planilha1").Cells.Select
    inputFile.Sheets("Planilha1").Cells.Copy

    outputFile.Sheets("Vales").Activate  
    outputFile.Sheets("Vales").Select.Cells
    Selection.Clear
    outputFile.Sheets("Vales").Range("A3").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

end sub

一旦我运行宏,就会显示错误:找不到方法或数据成员,然后突出显示该Sheets方法。我尝试将其更改为inputfile.Worksheets("Vales")并使变量不公开,但仍然无效。

标签: excelvba

解决方案


Public inputFile, outputFile as Worksheet          '<-- WORKSHEET

Set outputFile = Workbooks("Sales_Report.xlsm")    '<-- WORKBOOK

您在这里的变量类型不匹配。注意OutputFile被声明为 aWorksheet并且在您的宏中您将此变量分配给 aWorkbook

由于这是一个工作表变量,因此诸如此类的对象Sheets不可用,因此您的错误。


边注

您的公共变量 decliration 可能没有按照您认为的方式工作。变量类型需要一一分配(叹气)。在您的声明中,您实际上声明了如下变量:

inputFile = Variant
outputFile = Worksheet

但我希望你真的想要

Public inputFile as Workbook, outputFile as Workbook

推荐阅读