我创建了一个带有2个宏的.docm文件,并且在我的PC上一切正常,但是如果将.docm文件复制到另一台PC,则会显示“未定义子项或函数”错误。
宏1:
一个带有附加宏的activeX按钮(Developer - Legacy tools
):
Private Sub buttonStart_Click()
Main
End Sub
宏2:“主要”(通过View - Macros - Show Macros
创建)
Sub Main()
'Calls other subs and functions in the right order
End Sub
在另一台PC上,我授予Word使用ActiveX的权限,但是View - View Macros
列表中缺少“主要”宏,并且每次我尝试通过单击启动宏时都显示错误消息。按钮。
对不起,我是VBA和宏的新手。我是否必须链接第二个宏或以其他方式添加它才能在其他PC上访问?
编辑:VBA编辑器的左侧(两个宏看起来相同):
答案 0 :(得分:1)
基于我对情况的了解:
ThisDocument
类模块中。Normal.dotm
(默认)模板的名为NewMacros
的模块中创建。Sub
过程)将出现在可用宏列表中。 ActiveX控件的事件未出现在列表中的原因是:a)它不是Private
,并且b)它不是在普通模块中-它在ThisDocument
中,它是一个类模块(代表文档在代码级别)。因此,buttonStart_Click
位于已分发到另一台PC的ThisDocument
模块中。另一方面,Sub Main
在Normal.dotm模板的NewMacros
中创建,该模板保留在原始计算机上。
因此,您需要
BilderEinlesen
,转到Insert
菜单,然后将 Module 插入项目。默认情况下,它将命名为Module1
。NewMacros
以打开代码页。完全选择Sub Main
,将其复制。Module1
打开代码页。如果Option Explicit
不在顶部,请键入。粘贴复制的Sub Main
。现在这两个过程都应该在将要分发的文档中。
注意:就我个人而言,我将Sub Main
重命名为其他名称。 Sub Main
由VBA在某些自动情况下(例如用于创建该情况的情况)生成,如果VBA再次想要创建这样的宏,则可能导致冲突...或者如果在同一时间打开的项目中存在另一个具有该名称的宏。如果确实要重命名,请记住还要在按钮单击事件中更改过程调用。