我正在尝试在ActiveWorkbook中调用工作表(调用宏的工作表)。它似乎选择了工作表,但当我尝试打印出ActiveSheet名称时却没有。
ActiveWorkbook.Worksheets("Query Tables").Activate ' Select has the same result as Activate
MsgBox ActiveWorkbook.Sheets("Query Tables").Name
MsgBox ActiveWorkbook.Name & vbTab & ActiveSheet.Name
这就是我从工作簿中调用加载项中的Sub的方法。
Application.Run "QTAnalyser.xlam!MyMacro()"
我做错了什么?
答案 0 :(得分:0)
.xlam文件的工作簿和Worsheet对象可能未激活,因为它们不应该可供Excel用户界面访问。
像这样修改你的代码:
Call Application.Workbooks("MyAddIn.xlam").Activate
Call ActiveWorkbook.Worksheets("Query Tables").Activate
MsgBox ActiveWorkbook.Sheets("Query Tables").Name
MsgBox ActiveWorkbook.Name & vbTab & ActiveSheet.Name
其中" MyAddIn.xlam"应该更改为您的文件名。
稍后修改
ActiveASheet
属性可能会链接到Application
,Window
或Workbook
对象。要解决这种歧义,请尝试:
Call Application.ActiveWorkbook.Worksheets("Query Tables").Activate
MsgBox Application.ActiveWorkbook.Sheets("Query Tables").Name
MsgBox Application.ActiveWorkbook.Name & vbTab & Application.ActiveSheet.Name
答案 1 :(得分:0)
找到我自己的答案,这是括号!!!
“Application.Run”QTAnalyser.xlam!MyMacro()“运行宏两次,以及不选择表格
这解决了它:
Application.Run“QTAnalyser.xlam!MyMacro”
我不确定为什么它会产生这种效果,但即使你有一个明显的参数,你也不应该使用括号