跨工作簿复制单元格不像以前那样工作

时间:2019-08-22 21:16:06

标签: excel vba

我在以前的宏中使用了相同的子例程,它可以正常工作,但现在根本行不通。

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"),并使变量不公开,但仍然不起作用。

1 个答案:

答案 0 :(得分:2)

Public inputFile, outputFile as Worksheet          '<-- WORKSHEET

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

此处的变量类型不匹配。请注意,OutputFile被声明为Worksheet,并且在您的宏中将该变量分配给了Workbook

由于这是一个工作表变量,因此Sheets之类的对象不可用,因此会出错。


旁注

您的公共变量递减可能无法按照您认为的方式工作。变量类型需要一一指定( sigh )。在您的语句中,您实际上声明了变量,如下所示:

inputFile = Variant
outputFile = Worksheet

但我希望您确实想要

Public inputFile as Workbook, outputFile as Workbook