建立外接程序的工作主要是创建类模块,用于处理外接程序专门的事件以及其它用户指定的事件,另外还包括用户的支持模块和窗体。除非需要有在相同的 IDE 中运行同一个外接程序的多个实例,否则,所有的类过程都必须声明为 “私有的”,以防其它例程随便地引用它们。
因为外接程序必须是 ActiveX 部件,所以,在完成外接程序的代码之后,必须将其作为 ActiveX.dll 或者 .exe 文件进行编译。由于种种原因,一般情况下最好将外接程序创建为 ActiveX.dll 文件。
详细信息 关于对 .exe 和 .dll 文件类型的外接程序的简单比较,请参阅“如何建立外接程序”中的“编译外接程序”。
初次涉足,先建立一个非常简单的外接程序,它只演示如何使用外接程序的基本部件─类模块。以后将解释该例是如何工作的。
注意 下面的过程引导您手工创建外接程序。或者,您可以只创建一个外接程序工程,则所有的基本外接程序结构都会为您创建好。
要创建 AddInProject 外接程序,请按照以下步骤执行:
这样就可以对创建外接程序所需的可扩展性对象和集合进行访问。
注意,有一个对应于 AddIn 模板的图标。该模板包括外接程序必备的一些启动代码。
在新模块中输入以下代码:
Declare Function WritePrivateProfileString& Lib _
"kernel32" Alias "WritePrivateProfileStringA" _
(ByVal AppName$, ByVal KeyName$, ByVal _
keydefault$, ByVal FileName$)
Sub AddToINI()
Dim rc As Long
rc = WritePrivateProfileString("Add-Ins32", _
"AddInProject.AddInClass", "0", "VBADDIN.INI")
MsgBox _
"Add-in is now entered in VBADDIN.INI file."
End Sub
或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,请参阅第四章“连接和显露外接程序”中的“引用外接程序”。
Implements IDTExtensibility
这样将在工程中增加一个 IDTExtensibility 对象的引用。
注意,四个新的事件将出现在“过程”框中:OnConnection、OnDisconnection、OnStartupComplete以及 OnAddInsUpdate。
虽然可以手工地输入过程语法,这里仍然强烈建议以单击框中的事件名的方式将过程添加至类模块中,从而确保所有的名称和参数均输入正确。另外,这样会快得多!
要使外接程序正常工作,所有这些事件过程都必须出现在类模块中。另外,如果有一个或多个事件过程中没有任何代码,则在编译时它将被删除,因此,至少需要在每个事件过程中加入一句注释,以确保编译时它们被保留在类模块中,这是很重要的。
Private Sub IDTExtensibility_OnConnection(ByVal _ VBInst As Object, ByVal ConnectMode As _ VBIDE.vbext_ConnectMode, ByVal AddInInst As _ VBIDE.AddIn, custom() As Variant) MsgBox "Add-in is now connected" End Sub Private Sub IDTExtensibility_OnDisconnection(ByVal _ RemoveMode As VBIDE.vbext_DisconnectMode, _ Custom () as Variant) MsgBox "Add-in is now disconnected" End Sub Private Sub IDTExtensibility_OnStartupComplete _ (custom() As Variant) '
增加注释的目的是'
防止过程在编译的时候被删除。End Sub
Private Sub IDTExtensibility_OnAddInsUpdate _
(custom() As Variant)
'
增加注释的目的是'
防止过程在编译的时候被删除。End Sub
文件 | 文件名 | 扩展名 |
Basic module | AddIn | .bas |
Class module | AddInClass | .cls |
Project | AddInProject | .vbp |
要测试 AddInProject 外接程序,请按照以下步骤执行:
这将把外接程序注册到系统注册表。
AddToINI
然后按RETURN 键。随后将出现一个消息框显示出“外接程序现在进入到 VBADDIN.INI 文件中”。这时,将出现以下对话框:
这时将出现以下对话框:
这个外接程序的作用是说明外接程序的部件,以及类模块这一基本部件的特点。下面将遍历上述各步骤,讨论每一步做了些什么,更重要的是:怎样做以及为什么这么做。
到这里需要指出很重要的一点:把一个外接程序分发给其他用户的时候,在使用该外接程序之前,必须在其机器上运行这个函数(也可以使用其它的替代方法)更新 Vbaddin.ini 文件。如果不这么做,Visual Basic 将不知道该外接程序是可用的,该外接程序将不会显示在“外接程序管理器”的外接程序列表中。
可以将这样一个过程放在基本模块中(如同所做的那样),并且指示用户运行此函数,但是更明智的解决办法是:在外接程序安装程序中替用户完成该工作。
或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,请参阅第四章“连接和显露外接程序”中的“引用外接程序”。
尽管主类模块是可以使用的,但最好还是不要把所有的代码都放在其中,除非很简单的情况。可以把其它代码放到基本模块或其它的类模块中,并从主类模块中调用该过程。只需按照通常过程的程序设计准则即可。