【问题标题】:Programmatically click a button in Excel through Macro (VBA)通过宏 (VBA) 以编程方式单击 Excel 中的按钮
【发布时间】:2021-11-21 16:31:17
【问题描述】:

我有一个自定义按钮,链接到一个可以做一些事情的宏。完成后,我希望代码以编程方式单击下面突出显示的按钮(更清楚的是,打开导入 XML 对话框),以便我的用户可以看到文件选择窗口,它会继续执行其他任务。

代表性图片

这是我当前的宏代码:

Option Explicit

Sub Button1_Click()
    ' ... All my existing macro code
    
    ' ---------- programmatically click the Import button (from Developer) here ------------
End Sub

我应该在宏中添加什么来实现这一点?

【问题讨论】:

  • 假设是什么?即该文件是否会始终在用户的工作站中打开,而不是等待用户单击该文件,您是否希望 Excel 打开该对话框并强制用户选择数据源?
  • 欢迎来到 SO :) 您的帖子表明您将 SO 视为免费的编码服务。而它的真正目的是让编码人员帮助其他编码人员解决特定问题。提问时请阅读help center。一般来说,您需要 1) 努力自己解决问题 2) 发布您迄今为止尝试过的内容。 3) 解释为什么这不起作用和/或没有做你打算做的事情。

标签: excel vba button


【解决方案1】:

我找到了问题的解决方案 -

% - Alt
l - Developer
t - Import

是将 XML 导入工作表的快捷键,此命令以编程方式运行快捷键,打开我想要的文件选择框。 -

Application.SendKeys ("%lt")

【讨论】:

  • SendKeys 很少是一个好的解决方案。你最终会遇到使用它的问题。
【解决方案2】:

CommandBars.ExecuteMso 方法:
https://docs.microsoft.com/en-us/office/vba/api/Office.CommandBars.ExecuteMso

“执行由 idMso 参数标识的控件。”
将鼠标悬停在要将其添加到功能区的按钮上,您将看到文本包括“XmlImport”

“此方法在特定命令没有对象模型的情况下很有用。适用于内置按钮、toggleButtons 和 splitButtons 控件。”

Private Sub ExecuteMso_MoveToFolder()
    ' https://docs.microsoft.com/en-us/office/vba/api/Office.CommandBars.ExecuteMso
    ' Hover over the button where you would add it to the ribbon,
    '  you will see the text includes "XmlImport"

    CommandBars.ExecuteMso ("XmlImport")
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-21
    • 2012-06-25
    • 2013-10-09
    • 2022-08-24
    • 1970-01-01
    • 2017-06-17
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多