excel - VBA宏打开时打开 "Options"

标签 excel vba com excel-addins

我希望 Microsoft Excel 工作簿在用户打开工作簿时显示“管理:COM 加载项”对话框。我正在 Excel 2016 上对此进行测试,但我也可以使用 2019 年。 (我的生产环境使用其中之一。)

我尝试了此代码,它打开“Excel 加载项”而不是“COM 加载项”,然后返回无效的过程调用:

Sub OpenComAddInsOptions()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    Application.CommandBars("Worksheet Menu Bar").Controls("Tools").Controls("Add-Ins...").Execute
    Dim addInWindow As Object
    Set addInWindow = Application.CommandBars("Add-Ins").Controls("COM Add-Ins")
    addInWindow.Execute
End Sub

我在此代码中尝试了各种“控件”变体,但找不到任何有效的。

接下来我想我可以发送键码来打开“选项”窗口,然后导航到“加载项”部分,最后使用此代码导航到“COM 加载项”,但它不会打开“选项” ”窗口,但返回“400”错误:

Sub OpenManageComAddInsOptions()
    'Open Excel Options window and navigate to Add-ins section
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    Application.SendKeys "%FT"
    Application.SendKeys "{DOWN 8}"
    Application.SendKeys "%A"
    Application.SendKeys "{DOWN}"
    Application.SendKeys "%G"
End Sub

我只测试了 SendKeys“%ft”,它没有打开“选项”窗口。为了测试语法,我测试了 SendKeys“%pm”,这可以打开“页面/边距”窗口,然后确认 Alt+f+t 从键盘打开“选项”。

然后我尝试使用此代码打开“选项”菜单,但它们也返回“400”错误:

Sub OpenExcelOptions()
    Application.Dialogs(xlDialogOptions).Show
End Sub

Sub OpenExcelOptions()
Application.ExecuteExcel4Macro "SHOW.DIALOG(400,,1)"
End Sub

我确认对话框“xlDialogPrint”和“xlDialogOpen”打开各自的窗口,因此此语法也应该是正确的。微软给了我“xlDialogOptions”语言,但没有效果。

大家还有其他建议吗?

最佳答案

I would like to have a Microsoft Excel workbook display the "Manage: COM Add-ins" dialog box when a workbook is opened by the user.

尝试CommandBars.ExecuteMso方法

Application.CommandBars.ExecuteMso "ComAddInsDialog"

关于excel - VBA宏打开时打开 "Options",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75697506/

相关文章:

vba - 使用 Sublime Text 或 Notepad++ 作为 VBA 的编辑器和生成器

mysql - 导出大型 MySql 表

vba - 自动超链接提取的文件

Excel浮点精度 "ROUND()"hack不起作用

vba - 公式vba中循环的迭代

excel - 使用 VBA 代码将 Excel 工作表导出为单独的 pdf

excel - 将倍数应用于一组 12 个月的收入数据中随机选择的月份

c++ - UVC 扩展单元和 Directshow 集成

c# - 自动播放处理程序 : wrong clipboard format?

c# - 将 IUnknowns 的 SAFEARRAY 转换/转换为可迭代的接口(interface)指针数组