我在以前的宏中使用了相同的子例程,它可以正常工作,但现在根本行不通。
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")
,并使变量不公开,但仍然不起作用。
答案 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