Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从普通excel工作簿(.xlsx)单击按钮时触发外部宏_Vba_Excel - Fatal编程技术网

Vba 从普通excel工作簿(.xlsx)单击按钮时触发外部宏

Vba 从普通excel工作簿(.xlsx)单击按钮时触发外部宏,vba,excel,Vba,Excel,简单地说,我的问题如下:普通excel工作簿(.xlsx not.xlsm)中工作表上的按钮是否可能触发另一个文件中的宏,特别是已安装的excel加载项(.xlam) 以下是我为什么要实现这一目标的一些背景。我有一个工作簿,许多用户需要能够查看,但只有一些用户需要能够通过在另一张工作表上填写表单并在外接程序中调用宏来更新。工作表不应包含任何宏,以避免正常用户打开时出现安全警告。我可以通过在外接程序中有一个功能区按钮来实现这一点,用户单击该按钮,然后在执行更新代码之前,检查是否打开了正确的工作簿以

简单地说,我的问题如下:普通excel工作簿(.xlsx not.xlsm)中工作表上的按钮是否可能触发另一个文件中的宏,特别是已安装的excel加载项(.xlam)


以下是我为什么要实现这一目标的一些背景。我有一个工作簿,许多用户需要能够查看,但只有一些用户需要能够通过在另一张工作表上填写表单并在外接程序中调用宏来更新。工作表不应包含任何宏,以避免正常用户打开时出现安全警告。我可以通过在外接程序中有一个功能区按钮来实现这一点,用户单击该按钮,然后在执行更新代码之前,检查是否打开了正确的工作簿以及是否填写了表单等。但是,如果按钮位于表单下方的工作表上,而不是出现在功能区上,界面会更好。因此,我的问题是,在未启用宏的工作簿中,是否可以通过单击按钮触发外部宏

我看不到如何从未启用宏的工作簿中的控件执行宏。

我看不到如何从未启用宏的工作簿中的控件执行宏。

是的,可以将外部宏(应为.xlsm文件)分配给未启用宏的工作簿(.xlsx)按钮。为简单起见,我的xlsm宏与xlsx工作簿位于同一目录中。(注意:我使用的是Excel 2010)

  • 首先,必须在Excel窗口的同一实例中打开xlsm宏(即不要打开新的Excel实例),以便xlsx工作簿能够查看/访问它
  • 右键单击xlsx工作簿按钮并选择“分配宏…”
  • 确保在“所有打开的工作簿”中选择宏
  • 将显示打开的工作簿中的所有宏(这就是为什么执行步骤1很重要)
  • 从列表中选择所需的宏,然后单击“确定”

  • 可以,您可以将外部宏(应为.xlsm文件)分配给未启用宏的工作簿(.xlsx)按钮。为简单起见,我的xlsm宏与xlsx工作簿位于同一目录中。(注意:我使用的是Excel 2010)

  • 首先,必须在Excel窗口的同一实例中打开xlsm宏(即不要打开新的Excel实例),以便xlsx工作簿能够查看/访问它
  • 右键单击xlsx工作簿按钮并选择“分配宏…”
  • 确保在“所有打开的工作簿”中选择宏
  • 将显示打开的工作簿中的所有宏(这就是为什么执行步骤1很重要)
  • 从列表中选择所需的宏,然后单击“确定”

  • 我想可能是这样的。我不知道是否有某种方法可以使用“分配宏”对话框指向外部宏,而不必在工作簿中运行任何代码。我想可能是这样的。我不知道是否有某种方法可以使用“指定宏”对话框指向外部宏,而无需在工作簿中运行任何代码。