VB创建COM加载项

如何用VB创建COM加载项?

通过此演练,可以用 VB 创建 COM 加载项。COM 加载项可以在不给用户增加复杂性的情况下扩展应用程序的功能。究其实质,COM 加载项是一个动态链接库 (DLL),需要进行注册才能供 Microsoft® Office XP 应用程序加载和使用。虽然可以将加载项编写成可执行文件(.exe),但DLL 通常会比.exe文件提供更好的性能。

此演练将使用 VB 创建并运行一个自定义工具栏 COM 加载项。本主题中的任务假定您熟悉 Office 应用程序、VB 工程,以及调试和运行代码。

引言

创建 COM 加载项时可以使用任何支持 COM 的语言,如 VBA、Visual Basic 和 Microsoft Visual C++。用 Office Developer 创建的加载项将自动打包成 DLL,并由宿主应用程序注册后进行加载。可以创建一个加载项但能用于多个应用程序中。有关详细信息。请参阅为多个应用程序创建 COM加载项。

此演练将完成一系列步骤,从而用 VB 创建一个 COM 加载项。创建 COM 加载项的基本步骤包括:

1.配置外接程序设计器。

2.在外接程序设计器中编写代码。

3.将命令条控件集成到加载项中。

4.对 COM 加载项进行调试和测试。

5.为 COM 加载项生成 DLL。

6.解决 COM 加载项的开发问题。

配置外接程序设计器

用外接程序设计器创建的工程为开发加载项提供工作区域。使用外接程序设计器可以创建用于 VBA 或任何 Office 应用程序的 COM 加载项。工程中的每个外接程序设计器都表示一个单独的、只能在一种 Office 应用程序中运行的加载项。创建的 DLL 可包含多个加载项,它们使用相同的窗体、模块和类模块,但面向的却是不同的应用程序。此演练使用 Excel 作为宿主 Office 应用程序。

如果希望加载项可供多个应用程序使用,就必须为每个宿主应用程序各自添加一个外接程序设计器。可以通过模块共享代码;但在每个工程中,必须引用每个宿主应用程序所特定的对象模型。

配置外接程序设计器

1.打开 VB

2.在“文件”菜单中,选择“新建工程”,然后选择“外接程序”。

3.把窗体移除,双击设计器中的Connect.

3.在“外接程序显示名称”文本框中键入名称 Greeting Toolbar,在“外接程序描述”文本框中键入说明 Toolbar add-in that launches a

Hello World message in Excel。

4.从“应用程序”列表中选择 Microsoft Excel。

5.从“应用程序版本”列表中选择 Microsoft Excel 10.0。

6.从“初始化加载行为”列表中选择 "Startup"。有关各种不同类型初始加载行为的详细信息,请参阅指定加载行为。

7.在“工程”菜单中,选择“引用”,确保让工程引用下列类型库。(该引用列表是此演练所必需的。对于您的加载项,要确保选择每个可以使

用加载项的 Office 应用程序所需的类型库。)

●Visual Basic for Applications

●OLE Automation

●Microsoft Add-in Designer

●Microsoft Office 10.0 Object Library

●Microsoft Excel 10.0 Object Library

9.在“文件”菜单中选择“保存 Connect”。

10.在“工程另存为”对话框中,输入名称 Greetings.Dsr,选择要将其保存到的文件夹,然后单击“保存”。

在外接程序设计器中编写代码

在创建工程并为外接程序设计器赋值后,可以添加代码将加载项与宿主应用程序连接起来。此演练将向您展示将加载项与宿主应用程序连接起来所需的典型过程和事件。IDTExtensibility2 接口提供连接这二者所需的 COM 对象和事件。然后,加载项可以使用宿主应用程序所展示的对象模型与宿主应用程序接合。可以在对象浏览器中查看特定应用程序的对象模型。

外接程序设计器中的代码可处理加载项与宿主应用程序的集成。例如,加载或卸载加载项时运行的代码驻留在“外接程序设计器”的模块中。如果加载项中包含窗体,则外接程序设计器还可以包含用于显示窗体的代码。

声明变量和设置过程存根

1.在“工程资源管理器”窗口中,选择 Connect,然后打开“视图”菜单,单击“代码”。清除原来有的代码.

2.在“通用声明”部分,引用可扩展性接口。

Implements IDTExtensibility2

3.添加用于在加载项和宿主之间提供通讯的模块级变量。只要加载了 COM 加载项,赋值为 As Excel.Application 的变量就一直存在,因此,所有过程都可以确定加载项当前正在哪个应用程序中运行。因为 WithEvents 关键字指派给 cbbButton 变量,所以菜单项的 Click 事件过程将在用户单击新菜单项时触发。

'Global object references

Public appHostApp As Excel.Application

Private WithEvents cbbButton As Office.CommandBarButton

4.在“代码”窗口中,从“对象”列表中选择 IDTExtensibility2,从“事件”列表中选择 OnConnection。这将创建 OnConnection 事件过程存根。

注意   您必须使由 IDTExtensibility2 界面提供的每个事件中都包括事件过程存根。如果您删除了任何事件过程,工程就无法编译。

5.为下列每个事件添加事件过程存根:

●OnDisconnection

●OnStartupComplete

●OnBeginShutdown

●OnAddinsUpdate

现在就可以为您的加载项添加功能了。

将命令条控件集成到加载项中

如果您的 COM 加载项有一个用户界面,就可以添加用于显示命令条的代码,以方便用户运行您的加载项。此演练将显示如何在宿主应用程序中包含用于创建新命令条控件(工具栏按钮或菜单项)的代码。加载您的加载项时,会同时加载控件,用户可以通过单击按钮或菜单项打开并使用加载项。

创建命令条控件

1.查找 OnConnection 事件过程。在 Private Sub 和 End Sub 行之间,添加代码以创建新的命令条控件并将其指派给支持事件的 CommandBarButton 对象变量。整个过程将显示如下:

Private Sub IDTExtensibility2_OnConnection(ByVal _

   Application As Object, ByVal ConnectMode As _

   AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst _

   As Object, custom() As Variant)

   ' 存储启动引用

   Set appHostApp = Application

   ' 添加命令条

   Set cbbButton = CreateBar()

End Sub

如果您熟悉使用 Visual Basic 创建加载项,就可能注意到,在 VBA 中创建加载项时,不用设置命令条按钮 OnAction 属性的值。这是因为事件自动为您挂起。

2.查找 OnDisconnection 事件过程。在 Private Sub 和 End Sub 行之间,添加代码以便在卸载加载项时删除命令条控件。整个过程将显示如

下:

Private Sub IDTExtensibility2_OnDisconnection(ByVal _

   RemoveMode As AddInDesignerObjects.ext_DisconnectMode, _

   custom() As Variant)

   RemoveToolbar

   ' 移除要关闭的引用

   Set appHostApp = Nothing

   Set cbbButton = Nothing

End Sub

3.通常,只要在代码中存储函数,就会在 OnConnection 过程中添加您调用的函数对应的代码。该函数将创建命令条,设置命令按钮的属性,并提供错误信息的处理。

Public Function CreateBar() As Office.CommandBarButton

   ' 指定命令条

   Dim cbcMyBar As Office.CommandBar

   Dim btnMyButton As Office.CommandBarButton

   On Error GoTo CreateBar_Err

   Set cbcMyBar = appHostApp.CommandBars.Add(Name:="GreetingBar")

   ' 指定命令条按钮

   Set btnMyButton = cbcMyBar.Controls.Add(Type:=msoControlButton, _

      Parameter:="Greetings")

   With btnMyButton

      .Style = msoButtonCaption

      .BeginGroup = True

      .Caption = "&Greetings"

      .TooltipText = "Display Hello World Message"

      .Width = "24"

End With

   ' 显示并返回命令条

   cbcMyBar.Visible = True

   Set CreateBar = btnMyButton

   Exit Function

   CreateBar_Err:

   MsgBox Err.Number & vbCrLf & Err.Description

End Function

4.在 OnDisconnection 过程中添加您调用的函数对应的代码。该函数在加载宏被卸载时会删除命令条。

Private Function RemoveToolbar()

   appHostApp.CommandBars("GreetingBar").Delete

End Function

5.为 CommandBarButton 对象添加一个单击事件过程。该过程将在单击新的命令条按钮时被调用。下面的代码将显示一条消息以表明单击事件正在进行:

Private Sub cbbButton_Click(ByVal Ctrl As _

   Office.CommandBarButton, CancelDefault As Boolean)

   MsgBox ("Hello World!")

End Sub

6.保存您的工程。

现在,COM 加载项完成。其余的步骤就是调试和测试代码以确保它运行顺利,然后将加载项放入 DLL 文件中,该文件可以在其他装有 Office XP 的计算机上进行分发和使用。

对加载项进行调试和测试

当您在 VB 中开发 COM 加载项时,可以通过将工程置于运行模式而调试加载项。如果工程处于运行模式,就可以从 Office 应用程序中加载 COM 加载项并使用它,通过使用任何 VB 调试工具而对它进行测试和调试。

使用 VB 调试和测试 COM 加载项

1.将任何所需的断点、Stop 语句或监视放在代码中。(可先不做这步)

2.在“工程”菜单上,单击“属性”,在“调试”对话框中,选择“等待要创建的部件”,单击“确定”

2.在“运行”菜单上,单击“全编译执行”。这将对工程进行编译(当出现任何编译错误时将提出警告),然后将工程置于运行模式。

3.检查“[运行]”是否出现在VB的标题栏中。

注意   必须发布加载项,宿主应用程序才能使用它。

4.启动一个新的 Excel 实例。因为将加载项的加载行为设为 "Startup",所以只要启动应用程序,加载项就会加载,OnConnection 事件就会发生,于是出现 Greetings 按钮。现在,您可以使用为调试代码而添加的断点和 Stop 语句了。

如果单击 Greetings 按钮,则只要在 VB 中运行工程,Hello World 消息就会出现在编辑器之前(不在 Excel 之前)。在将工程生成为 DLL 文件后,该消息就会出现在 Excel 之前。

5.当完成调试和测试后,打开“运行”菜单,单击“终止工程”。这会清除临时文件和注册表项,并将工程置于正确的状态以生成 DLL 文件。

为 COM 加载项生成 DLL

编写并调试代码后,可以使您的加载项成为一个 DLL 以将其部署到其他装有 Office XP 的计算机上。

在 VB 中将 COM 加载项打包为 DLL

1.从“文件”菜单上,选择“生成 myAddin.DLL”。

2.在“生成工程”对话框中保存文件名 Greetings,并选择要用于保存工程的位置。

3.单击“确定”。 (此时,加载项可在本机正式使用)

这一步骤将创建 COM 加载项,添加适当的注册表项,并使COM 加载项可用于 Office 宿主中。创建加载项 DLL 时,VB 使用给外接程序设计器提供的信息,将 DLL 注册为 COM 加载项。VB 向注册表中写入加载项的名称、说明和初始加载行为设置。加载项的宿主应用程序读取这些注册表项并加载相应的加载项。

有关分发部署 COM 加载项的信息,请参阅部署应用程序和部署 COM 加载项。

常见加载项开发问题疑难解答

当在开发环境中工作并在应用程序之间进行切换时,可能会遇到某些错误信息或意外行为。下面是一些常见问题及其解决方案。

出现编译错误或语句结束在编辑器中无效

要确保为工程引用了适当的对象库。

运行工程并打开新的宿主应用程序实例时没有任何反应

●要确保字“已发布的”出现在所运行的加载项的标题栏中。如果不如此,就必须运行工程。

●单击每个打开的应用程序窗口。您的对象可能正在运行,但只有在您单击所打开的应用程序的第一个实例时,它才是可见的。

●要确保正确地指定并设置模块级变量。

●在宿主应用程序中,要确保在“COM 加载项”对话框中选中了您的加载项。可以通过向工具栏中添加 COM 加载项命令而对宿主应用程序进行

自定义。此命令将打开“COM 加载项”对话框。

将 COM 加载项对话框添加到工具栏中

1.打开EXCEL“工具”菜单,单击“自定义”,选择“命令”选项卡。在“类别”下,选择“工具”。沿“命令”列表向下滚动,以查找“COM

加载项”。将“COM 加载项”拖动到工具栏中,以创建新的按钮,然后关闭“自定义”对话框。

2.在该工具栏上,单击刚添加的“COM 加载项”按钮。

3.在“COM 加载项”对话框中,确认选中您的加载项旁边的复选框。若要卸载加载项,请清除该复选框。

对象出现在宿主应用程序中但没有响应

可能是有多个对象实例在运行。用于检测和移除已有的具有该名称的代码可能没在运行。检查并调试您的 OnDisconnection 代码。

=====================================

但是在Word中只能在第一个打开的Word中具有功能实现,但同时打开多个Word文件时,在除了第一个打开的Word文件窗口以外的其他窗口中的菜

单可以看到,但菜单所作的功能却无法实现。

有结果了,全部代码如下:

Implements IDTExtensibility2

Public WithEvents appHostApp As Word.Application

Private WithEvents cbbButton As Office.CommandBarButton

Private Sub appHostApp_DocumentOpen(ByVal Doc As Word.Document)

Set cbbButton = CreateBar()

End Sub

Private Sub appHostApp_NewDocument(ByVal Doc As Word.Document)

Set cbbButton = CreateBar()

End Sub

Private Sub appHostApp_Quit()

On Error Resume Next

RemoveToolbar

End Sub

Private Sub appHostApp_WindowActivate(ByVal Doc As Word.Document, ByVal Wn As Word.Window)

Set cbbButton = CreateBar()

End Sub

Private Sub cbbButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

MsgBox ("Hello World!")

End Sub

Private Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)

'p

End Sub

Private Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)

'p

End Sub

Private Sub IDTExtensibility2_OnConnection(ByVal Application As Object, ByVal ConnectMode As

AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)

   ' 存储启动引用

   Set appHostApp = Application

   ' 添加命令条

   Set cbbButton = CreateBar()

End Sub

Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As

Variant)

  RemoveToolbar

   ' 移除要关闭的引用

   Set appHostApp = Nothing

   Set cbbButton = Nothing

End Sub

Private Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)

'p

End Sub

Public Function CreateBar() As Office.CommandBarButton

   ' 指定命令条

   Dim cbcMyBar As Office.CommandBar

   Dim btnMyButton As Office.CommandBarButton

   On Error GoTo CreateBar_Err

   '--------------------

   For Each br In appHostApp.CommandBars

   If br.Name = "GreetingBar" Then

   br.Visible = True

   Set CreateBar = br.Controls(1)

   Exit Function

   End If

   Next

   '---------------------

   Set cbcMyBar = appHostApp.CommandBars.Add(Name:="GreetingBar")

   ' 指定命令条按钮

   Set btnMyButton = cbcMyBar.Controls.Add(Type:=msoControlButton, _

      Parameter:="Greetings")

   With btnMyButton

      .Style = msoButtonCaption

      .BeginGroup = True

      .Caption = "&Greetings"

      .ToolTipText = "Display Hello World Message"

      .Width = "24"

End With

   ' 显示并返回命令条

   cbcMyBar.Visible = True

   Set CreateBar = btnMyButton

   Exit Function

CreateBar_Err:

   MsgBox Err.Number & vbCrLf & Err.Description

End Function

Private Function RemoveToolbar()

On Error Resume Next

   appHostApp.CommandBars("GreetingBar").Delete

End Function

==========================

如果一个工具条中有多个按钮又该如何编写代码

Private WithEvents cbbButton1 As Office.CommandBarButton

Private WithEvents cbbButton2 As Office.CommandBarButton

。。。。

事个过程也要

Public Function CreateBar() As Office.CommandBarButton

改成

sub CreateBar() 好了

Set cbbButton = CreateBar()

改成

call  CreateBar

Set CreateBar = br.Controls(1)

改成

Set cbbButton1 = br.Controls(1)

Set cbbButton2 = br.Controls(2)

。。。

如果很多,要用类模块了

======================

调试DLL是比较麻烦的事

对于复杂的工程

建议先用VB做成EXE方式,调试完了再改成DLL

IDTExtensibility2_OnConnection对应Form_load事件

IDTExtensibility2_OnDisconnection对应form_queryunload事件

【宏通Excel_VBA  Com加载宏制作通用模板】、Dll制作
一、创建工程:  打开VB6.0,新建一个外接程序
二、VB中添加引用:

    在“工程”菜单中点击“引用”,然后选上“Microsoft Excel 9.0 Object Libray”这个选项,因为我用的是Excel2000版,其它版本的版本号就不是9.0,选择对应的即可。引用后,在代码编写过程中,就可以自动完成对象的属性、方法了。

三、设置设计器属性:

工程名称:VBA_COM

四、编写代码:
1、设计器代码:
Option Explicit

'加载时事件
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As

AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
  Set xlApp = Application
  Set ExcelEvents = New VBAsoft 'VBAsoft:类模块名称
End Sub

'卸载后事件
Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
    Set xlApp = Nothing
    Set ExcelEvents = Nothing
End Sub


2、模块代码:
Option Explicit

Public xlApp As Excel.Application

Public ExcelEvents As VBAsoft 'VBAsoft:类模块名称

3、类模块代码:VBAsoft
Option Explicit
Public WithEvents XL As Excel.Application

Private Sub Class_Initialize()
    Set XL = xlApp
     Call zyg365 'zyg365后加的语句:这样确保刚打开的工作簿网格线就是要设置的颜色
End Sub

'工作簿事件:
Private Sub XL_NewWorkbook(ByVal Wb As Workbook)
    Call zyg365
End Sub
Private Sub XL_WorkbookActivate(ByVal Wb As Workbook)
    Call zyg365
End Sub

'工作表事件:
Private Sub XL_SheetActivate(ByVal Sh As Object)
    Call zyg365
End Sub
Private Sub XL_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
'所有工作簿的所有工作表活动单元格都变色:高亮显示
  XL.Cells.Interior.ColorIndex = xlNone   '设置所有单元格为系统默认颜色
  XL.Cells(Target.Row, Target.Column).Interior.ColorIndex = 3 '活动单元格都变色:高亮显示

End Sub


'通用模块代码:
Private Sub zyg365()
On Error Resume Next
    If XL.ActiveWindow.GridlineColorIndex <> 14 Then XL.ActiveWindow.GridlineColorIndex = 14
    MsgBox "宏通VBA软件工作室制:" & Chr(10) & Chr(10) & "    Excel_VBA Com加载宏模板。", , "宏通VBA软件工作室:"
    MsgBox "宏通VBA软件工作室制作:" & Chr(10) & Chr(10) & "      宏软VBA软件工作室" & Chr(10) & "QQ:798017976   Email:[email protected]", , "宏通VBA软件工作室:"
    frmAddIn.Show 0
End Sub

五、生成Dll,注册Dll。

excel 的 COM 加载项和自动化加载项

概要

Microsoft Office Excel 2002 和 Microsoft Office 2007 支持自动化加载项以组件对象模型 (COM) 加载项的补充。本文介绍了这两种类型的外接程序的差异。

更多信息

COM 外接程序COM 加载项向开发人员提供一种扩展的 Office 2000,Office XP,Office 2003 和 Office 2007 的自定义...

COM 外接程序

COM 加载项向开发人员提供一种扩展的 Office 2000,Office XP,Office 2003 和 Office 2007 的自定义任务的应用程序功能的方法。COM 加载项通常用于使 Excel 自动化响应一个单击 CommandBar 按钮、 窗体或对话框或其他一些特定于 Excel 如打开或关闭工作簿或工作表上输入数据的事件。COM 加载项函数不能直接从工作表中的单元格公式中调用。

COM 加载项是一个进程内 COM (ActiveX DLL) 的服务器必须实现 IDTExensibility2 接口。所有 COM 加载项必须都实现此接口的五种方法的每个: OnConnection、 OnStartupComplete、 OnAddinsUpdate、 OnBeginShutDown 和 OnDisconnection。

在用户系统上安装 COM 加载项后,为外接程序创建注册表项。除了普通的 COM 注册,COM 加载项注册为它运行每个 Office 应用程序。在下面的注册表项中注册 COM 加载项使用由 Excel:

HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\

                   

此项包含每个已安装 COM 加载项的子项。该子项的名称是在 COM 加载项的 ProgID。一个 COM 加载项的子项还包含描述该 COM 加载项的友好名称,说明,并加载行为的值。加载行为描述外接程序加载方式在 Excel 中: 按需,加载或未加载,在启动加载仅,下次启动时加载。

COM 加载项还可以加载和卸载通过 Excel 2002 的用户界面。若要这样做,请按照下列步骤操作:

在 视图 菜单上指向 工具栏,然后单击 自定义。

在 工具栏 对话框中单击 高级 选项卡。在类别列表中选择 工具。查找命令的列表中的 COM 加载项,并将命令拖到菜单或您选择的 CommandBar。关闭 工具栏 对话框。

单击添加到显示 COM 加载项 对话框的 COM 加载项 命令。对话框中列出所有 COM 加载项在您的系统上安装的并在 COM 加载项当前加载的所选。

COM 加载项还可以加载和卸载通过 Excel 2007 用户界面。若要这样做,请按照下列步骤操作:

单击 Microsoft Office 按钮,然后单击 Excel 选项。

单击 加载宏。

在 管理,下单击 COM 加载项,然后单击 定位。

COM 加载项 对话框列出的所有 COM 加载项在计算机上安装的。选择在 COM 加载项当前加载的。

有关 COM 加载项的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

238228  (http://support.microsoft.com/kb/238228/ ) HOWTO: 生成的 Office 2000 COM 外接在 Visual Basic 中

230689  (http://support.microsoft.com/kb/230689/ ) 示例: Comaddin.exe Office 2000 COM 加载项在 Visual c + + 中写入

有关详细的信息,请参阅下面的 Microsoft 网站:

办公室外接程序http://support.microsoft.com/ofd

自动化加载项

除了 COM 加载项、 Excel 2002 和 Excel 2003 支持自动化加载宏自动化加载项生成上 COM 加载项,可以从 Excel 工作表中的公式调用自动化加载项中的函数。COM 加载项必须是在进程内 COM 服务器支持 IDTExtensibility2 界面 ; 但是,自动化加载项可以是进程内或进程外 COM 服务器和 IDTExtensibility2 的实现是可选的。

若要在 Excel 中使用函数从自动化加载项,请按照下列步骤操作:

在 工具 菜单上单击 加载宏。

单击 加载宏 对话框中的 自动化。从已注册的 COM 服务器的列表,选择您的自动化加载项,然后单击 确定。

自动化加载项将显示在 加载项 对话框。单击 确定 以关闭 加载宏 对话框。

若要在 Excel 2007 中使用函数从自动化加载项,请按照下列步骤操作:

单击 Microsoft Office 按钮,然后单击 Excel 选项。

单击 加载宏。

在 管理,下单击 Excel 加载宏,然后单击 定位。

单击 加载宏 对话框中的 自动化。在已注册的 COM 服务器的列表中,单击您的自动化加载项,然后单击 确定。

自动化加载项将显示在 加载项 对话框。单击 确定 以关闭 加载宏 对话框。

在进行时添加到列表在 加载宏 对话框中,或当您选择并清除在列表中的外接程序,Excel 将在注册表中存储您所做的更改。第一次,Excel 将使用下面的注册表设置,以确定自动化加载项在添加-在列表中加载:

 Excel 2002

Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Options

String:         OPENx

Sample Value:   /A "ServerName.ClassName"

                   

Excel 2003

Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options

String:         OPENx

Sample Value:   /A "ServerName.ClassName"

                    Excel 2007

Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options

String:         OPENx

Sample Value:   /A "ServerName.ClassName"

                   

/ A 开关,该字符串值中使用的是 Excel 2002 的新 / Excel 2003 和专门用于加载自动化加载项。所有的自动化外接程序会按需加载 ; 没有设置,可以更改为自动化加载项的加载行为。

具有一个名称等中的添加-中的一个子项时清除了自动化加载项在 加载宏 对话框中列出的的 ProgID 创建以下注册表项中:

Excel 2002:

HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Add-in Manager

                     Excel 2003:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager

                   

此注册表设置可确保自动化加载已添加到该加载项列表中的项将保留在列表中,即使您已选择不加载这些。

 

前面已提到自动化加载项可能会实现 IDTExtensibility2,但它不需要在 Excel 中加载项调用该函数,从工作表中的顺序。如果您需要自动化加载项获取一个对 Excel 实例引用,您可以实施 IDTExtensibility2 和使用 应用程序 参数的 OnConnection 自动化 Excel。

可以通过 COM 加载项 对话框和 加载宏 对话框的 Excel 用户界面中加载自动化加载项实现 IDTExtensibility2 的。在以下部分描述行为的一个自动化加载项的基础是否已在一个或两个) 这些对话框中加载:

仅在 加载项 对话框中加载。

外接程序是按需加载的。可以从工作表中的公式调用外接程序中的函数。

仅在 COM 加载项 对话框中加载。

作为一个 COM 加载项加载外接程序,其加载行为确定从注册表中的设置。在外接程序中的函数不能调用从工作表中的公式。

加载 COM 加载 项对话框和 外接程序 对话框中。

加载的加载项的两个单独实例。作为一个 COM 加载项加载一个实例,并作为自动化加载项加载另一个实例。在 COM 加载项实例使用在注册表中所指示的加载行为 ; 按需加载自动化加载项实例。这两个实例独立于另一个工作,并且不共享的全局变量。

因为按需加载自动化加载项,Excel 可能会尝试在单元格编辑模式时加载外接程序。因此,开发自动化加载项支持 IDTExtensibility2 时, 您应该注意,不执行任何操作尝试更改 Excel 的状态时添加-中加载。

你可能感兴趣的:(ui,前端,xhtml)