csgo打开控制台命令:COM加载项编写过程(Excel、以工具栏响应)
来源:百度文库 编辑:中财网 时间:2024/05/08 06:08:15
COM加载项编写过程(Excel、以工具栏响应) 写在前面:遇到几个朋友问COM加载项怎么做,搜索一下论坛似乎没有这方面详细的做法。所以根据我摸索出来的道路,写这篇东西糊弄糊弄大众,赚赚黑心水晶。嘿嘿。。。条条大道通罗马,这篇东东不是绝对正确也不是唯一一条道路。修仙也好,修魔也好,方向不同,但最终都是与天争命都是追求天道的真理(网络小说看多了)。欲练神功,请先自宫。。。
由于贫道作文能力有限,写出来的东西逻辑不清晰,觉得烦的朋友直接研究代码去吧。
废话不说了,转入正题:
一、创建工程并设置属性
二、连接Excel
三、响应Excel事件
四、调试编译分发安装
下载 (80.13 KB)
2008-7-24 01:24
2、为工程添加引用:“工程”菜单?“引用”?勾上“Microsoft Excel 11.0 Object Libray”。(如果不引用,ExcelApplication、工具栏、按钮需声明为“Object”,且代码编写过程中没有自动完成对象的属性、方法等)
3、设置设计器属性:在工程资源管理器中双击“Connect(Connect)”,打开设计器设计窗口。
下载 (46.67 KB)
2008-7-24 01:24
在设计器中。外接程序显示名称输入你想要的名称(这里为“TestAddin”);外接程序描述中输入外接程序的描述;应用程序选择“Microsoft Excel”;应该程序版本取决于你的电脑装了什么版本的Office我装的是Office2003,故选“Microsoft Excel 11.0”;初始化加载行为选择“Startup”。
下载 (69.49 KB)
2008-7-24 01:24
[ 本帖最后由 Coming 于 2008-7-24 01:27 编辑 ]
双击设计器“Connect”,按“F7”进入代码编辑窗口,把除了“Option Explicit”之外的代码都删除。在“对象框”中选择“AddinInstance”,“过程/事件框”中选择“OnConnection”。
下载 (264.81 KB)
2008-7-24 01:35
即出现
添加一个类“ButtonEvent”,在类中定义一个响应事件的变量。
添加一个类“ButtonEventCol”,“ButtonEventCol”类的代码:
双击设计器“Connect”,按“F7”进入代码编辑窗口。刚才我们的代码
在“AddinInstance_OnStartupComplete”(对象已加载完毕)事件中创建工具栏、按钮,并把按钮和响应事件的类连接,代码如下:
关闭 Excel 时执行
[ 本帖最后由 Coming 于 2008-7-24 01:44 编辑 ]
在该事件过程中添加代码如下:
关闭Excel,设计器代码窗口中的“AddinInstance_OnConnection”事件中,在“Set gExcelApp = Application”这句代码设置断点。按“F5”运行,然后打开 Excel 。这时,代码执行到“Set gExcelApp = Application”这里就暂停了。你可以一步一步按“F8”进行跟踪调试,看看加载项的工作方法,找到错误的地方并改正。当调试没什么问题之后,编译就比较简单了,按“文件”菜单?“生成工具栏连接.DLL”。然后生成就行了。
2、分发安装
这里介绍用“WinRAR”制作安装包。
按“工程”菜单?引用,查看引用项目的路径,把引用项目的文件复制到生成的DLL文件目录中。
如果有窗体,在工具栏点右建?“部件”,查看引用的项目的路径,把引用项目的文件复制到生成的DLL文件目录中。
打开“记事本”,输入
打开“记事本”,输入
打开“WinRAR”,定位到生成的DLL文件的目录。选中要DLL文件、安装和卸载两个BAT文件、被工程引用项目的文件等。按“添加”。
下载 (161.53 KB)
2008-7-24 01:40
在压缩参数对话框中的“常规”选项卡中,勾选“创建自解压格式压缩文件”。
下载 (100.45 KB)
2008-7-24 01:40
切换到“高级”选项卡,按“自解压选项”。
下载 (93.02 KB)
2008-7-24 01:40
在“高级自解压选项”对话框中,解压路径中填入“工具栏连接”,选中“在 Program Files 中创建”,不勾选“保存并恢复路径”,“解压后运行”中填入“安装.BAT”。全部确定后生成的“工具栏连接.exe”就是安装文件了。
下载 (91.35 KB)
2008-7-24 01:40
[ 本帖最后由 Coming 于 2008-7-24 01:40 编辑 ]
2008-7-24 01:35 原贴:http://www.officefans.net/cdb/viewthread.php?tid=96508
由于贫道作文能力有限,写出来的东西逻辑不清晰,觉得烦的朋友直接研究代码去吧。
废话不说了,转入正题:
一、创建工程并设置属性
二、连接Excel
三、响应Excel事件
四、调试编译分发安装
一、创建工程并设置属性。
1、新建工程:打开VB6.0,新建一个工程。在新建工程选项中选择“外接程序”(有的是“Addin”)。下载 (80.13 KB)
2008-7-24 01:24
2、为工程添加引用:“工程”菜单?“引用”?勾上“Microsoft Excel 11.0 Object Libray”。(如果不引用,ExcelApplication、工具栏、按钮需声明为“Object”,且代码编写过程中没有自动完成对象的属性、方法等)
3、设置设计器属性:在工程资源管理器中双击“Connect(Connect)”,打开设计器设计窗口。
下载 (46.67 KB)
2008-7-24 01:24
在设计器中。外接程序显示名称输入你想要的名称(这里为“TestAddin”);外接程序描述中输入外接程序的描述;应用程序选择“Microsoft Excel”;应该程序版本取决于你的电脑装了什么版本的Office我装的是Office2003,故选“Microsoft Excel 11.0”;初始化加载行为选择“Startup”。
下载 (69.49 KB)
2008-7-24 01:24
[ 本帖最后由 Coming 于 2008-7-24 01:27 编辑 ]
二、连接 Excel
我们编写COM加载项就是要在Excel里面做点什么,如果用一个变量来保存Excel对象的话,我们基本上就能任意把Excel捏圆捏扁。变量的作用域是作为模块级的还是全局的就看你的实际情况,为了方便,这里定义为全局变量。添加一个模块“mduMain”,在模块中定义变量:- Public gExcelApp As Excel.Application。
双击设计器“Connect”,按“F7”进入代码编辑窗口,把除了“Option Explicit”之外的代码都删除。在“对象框”中选择“AddinInstance”,“过程/事件框”中选择“OnConnection”。
下载 (264.81 KB)
2008-7-24 01:35
即出现
- Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
- End Sub
- Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
- Set gExcelApp = Application
- End Sub
添加一个类“ButtonEvent”,在类中定义一个响应事件的变量。
- Public WithEvents Button As Office.CommandBarButton
添加一个类“ButtonEventCol”,“ButtonEventCol”类的代码:
- Option Explicit
- Private mCol As Collection '集合,用来存放“ButtonEvent”类。
- Private Sub Class_Initialize()
- Set mCol = New Collection '类实例化时实例化集合
- End Sub
- Private Sub Class_Terminate()
- Set mCol = Nothing '类销毁时销毁集合
- End Sub
- Public Sub Add(ByRef Button As Office.CommandBarButton) '添加按钮
- Dim objNew As New ButtonEvent '创建“ButtonEvent”类新实例
- Set objNew.Button = Button '连接事件
- mCol.Add objNew '将类添加到集合中,只要“ButtonEventCol”类生存期未完,所有添加的“ButtonEvent”类就一直生存。
- Set objNew = Nothing
- End Sub
双击设计器“Connect”,按“F7”进入代码编辑窗口。刚才我们的代码
- Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
- Set gExcelApp = Application
- End Sub
- '定义一个变量用于存放工具栏对象。
- Private mMyBar As Office.CommandBar
- '定义一个变量用于存放“ButtonEventCol”类实例
- Private mButtonEventCol As New ButtonEventCol
在“AddinInstance_OnStartupComplete”(对象已加载完毕)事件中创建工具栏、按钮,并把按钮和响应事件的类连接,代码如下:
- Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
- Dim MyControl As Office.CommandBarButton
- Set mMyBar = gExcelApp.CommandBars.Add(Name:="外接程序", Position:=msoBarFloating, Temporary:=True)
- mMyBar.Visible = True
- Set MyControl = mMyBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
- With MyControl
- .BeginGroup = False
- .Caption = "新建工作簿"
- .Enabled = True
- .Visible = True
- .FaceId = 18
- .Style = msoButtonIconAndCaption
- .Parameter = "New" 'Parameter 属性是类在响应按钮事件时区分按钮的标记。
- '如果用 Tag 属性来区分的话,会发生二次事件。不知道为什么。
- End With
- mButtonEventCol.Add MyControl
- Set MyControl = mMyBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
- With MyControl
- .BeginGroup = False
- .Caption = "关闭工作簿"
- .Enabled = True
- .Visible = True
- .FaceId = 1088
- .Style = msoButtonIconAndCaption
- .Parameter = "Close"
- End With
- mButtonEventCol.Add MyControl
- Set MyControl = Nothing
- End Sub
关闭 Excel 时执行
- Private Sub AddinInstance_OnBeginShutdown(custom() As Variant)
- Set mButtonEventCol = Nothing
- '关闭 Excel 时释放类。
- '因为工具栏、按钮在创建的时候已经把 Temporary 属性设为 True 了,关闭 Excel 自动删除。
- '所以这里不用编写删除工具栏的代码。
- End Sub
[ 本帖最后由 Coming 于 2008-7-24 01:44 编辑 ]
三、响应按钮的事件
打开类“ButtonEvent”的代码编辑窗口,添加事件过程- Private Sub Button_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
- End Sub
在该事件过程中添加代码如下:
- Private Sub Button_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
- Select Case Ctrl.Parameter '根据按钮的 Parameter 属性决定执行什么动作。
- Case "New"
- gExcelApp.Workbooks.Add
- Case "Close"
- If Not (gExcelApp.ActiveWorkbook Is Nothing) Then
- gExcelApp.ActiveWorkbook.Close
- Else
- MsgBox "没有活动工作簿", vbExclamation
- End If
- End Select
- End Sub
四、调试编译分发安装
1、调试和编译:关闭Excel,设计器代码窗口中的“AddinInstance_OnConnection”事件中,在“Set gExcelApp = Application”这句代码设置断点。按“F5”运行,然后打开 Excel 。这时,代码执行到“Set gExcelApp = Application”这里就暂停了。你可以一步一步按“F8”进行跟踪调试,看看加载项的工作方法,找到错误的地方并改正。当调试没什么问题之后,编译就比较简单了,按“文件”菜单?“生成工具栏连接.DLL”。然后生成就行了。
2、分发安装
这里介绍用“WinRAR”制作安装包。
按“工程”菜单?引用,查看引用项目的路径,把引用项目的文件复制到生成的DLL文件目录中。
如果有窗体,在工具栏点右建?“部件”,查看引用的项目的路径,把引用项目的文件复制到生成的DLL文件目录中。
打开“记事本”,输入
- RegSvr32.exe 工具栏连接.dll
打开“记事本”,输入
- RegSvr32.exe 工具栏连接.dll /U
打开“WinRAR”,定位到生成的DLL文件的目录。选中要DLL文件、安装和卸载两个BAT文件、被工程引用项目的文件等。按“添加”。
下载 (161.53 KB)
2008-7-24 01:40
在压缩参数对话框中的“常规”选项卡中,勾选“创建自解压格式压缩文件”。
下载 (100.45 KB)
2008-7-24 01:40
切换到“高级”选项卡,按“自解压选项”。
下载 (93.02 KB)
2008-7-24 01:40
在“高级自解压选项”对话框中,解压路径中填入“工具栏连接”,选中“在 Program Files 中创建”,不勾选“保存并恢复路径”,“解压后运行”中填入“安装.BAT”。全部确定后生成的“工具栏连接.exe”就是安装文件了。
下载 (91.35 KB)
2008-7-24 01:40
[ 本帖最后由 Coming 于 2008-7-24 01:40 编辑 ]
附件
这个加载项比较简单,没有错误处理过程。
错误处理是每个程序很重要的部分。
加载项的错误处理更重要,因为可能你的程序错误而使用用户的 Excel 崩溃,有时候可能造成巨大的损失!
写在后面:若不自宫,也能成功!
2008-7-24 01:35 原贴:http://www.officefans.net/cdb/viewthread.php?tid=96508
excel 中工具-加载宏 怎么安装
如何用C++BUILDER编写一个从excel表导入SQL2000的工具
EXCEL公式编写
excel加载宏问题
excel加载宏
操作系统加载详细过程
能不能不用编写工具编写木马程序
asp 编写导入EXCEL表格
c#程序可以成为com加载项吗
请问如何编写COM文件
怎么删除IE-工具,加载项中的项
Javascript用什么工具编写???
EXCEL打印工具
求excel修复工具
关于EXCEL就加载宏
windows2000加载过程中黑屏!
用EXCEL如何编写自动计算功能?
关于Excel中公式编写的问题
在EXCEL如何编写CSV文件?
我想在excel中编写工资表,
在Excel中用VBA编写一个程序
excel "if函数"的编写
请简述怎么用Excel编写成绩单?
编写一个过程,以整形数作为形参.当该参数为奇数时输出False,而当该参数为偶数时输出Ture!