本帖最后由 hwc2ycy 于 2014-2-12 17:43 编辑
加载宏的模板完成后,今天就给加载宏添加相关的代码。 准备工作: 上一讲的加载宏文件制作好并加载。
打开EXCEL 后,切换到VBE中,找到工程资源管理器。
在VBE中没有找到的工程资源管理器的话就找到菜单 视图,工程资源管理器。 (或者直接按CTRL+R键)。
依次展开 demo1.xlam,MicrosoftExcel对象,双击Thisworkbook,在代码区中敲入下列代码: Option Explicit Dim WithEvents xlapp As Excel.Application 'WithEvents 关键字 '说明 varname 是一个用来响应由ActiveX 对象触发的事件的对象变量
Private Sub Workbook_AddinInstall() '当工作簿作为加载宏安装时,发生此事件。 Set xlapp = Application End Sub
Private Sub Workbook_AddinUninstall() '当任一作为加载宏的工作簿卸载时发生此事件。 Set xlapp = Nothing '释放对象 End Sub
Private Sub Workbook_Open() Set xlapp = Application '引象引用 End Sub
代码输入完成后,检查无误,保存(CTRL+S)。
接下来我们以这个模板添加功能:
通过日志的方式记录在EXCEL中打开,新建,关闭工作簿的的操作。
先添加三个应用程序事件: 添加应用程序事件的方法与以前基本添加工作簿,工作表事件过程的操作基本上相差不多,
也是直接在代码区上方右边的下拉列表中选择相应的事件过程即可。 不同之处在于代码区左边的对象下拉列表选择的对象不同。 上面录入的代码中有一句声明Dim WithEvents xlapp As Excel.Application 这时得派她上场了,在代码区上方左边的下拉列表中选择xlapp,然后在右边的过程列表分别添加三个事件: 打开是WorkbookOpen事件 新建是NewWorkbook事件 关闭是WorkbookBeforeClose事件 完整代码如下: Option Explicit
Dim WithEvents xlapp As Excel.Application 'WithEvents 关键字 '说明 varname 是一个用来响应由ActiveX 对象触发的事件的对象变量
Dim strFilename$ '日志文件(包含具体的路径,文件名以日期为主,TXT格式 Dim strMsg$ '添加到日志的内容 '时间,操作,工作簿名
Private Sub Workbook_AddinInstall() '当工作簿作为加载宏安装时,发生此事件。 Set xlapp = Application End Sub
Private Sub Workbook_AddinUninstall() '当任一作为加载宏的工作簿卸载时发生此事件。 Set xlapp = Nothing '释放对象 End Sub
Private Sub Workbook_Open() Set xlapp = Application '引象引用 End Sub
Private Sub xlapp_NewWorkbook(ByVal Wb AsWorkbook) strFilename = ThisWorkbook.Path & Application.PathSeparator &Format(Now, "YYYY-MM-DD.txt") 'Format函数,与工作表函数TEXT有异曲同工之效 strMsg = Format(Now, "YYYY-MM-DD hh:mm:ss") & " 新建了工作簿 "& Wb.Name WriteInfo strFilename, strMsg 'WriteInfo自定义过程,输出日志 End Sub
Private Sub xlapp_WorkbookBeforeClose(ByValWb As Workbook, Cancel As Boolean) strFilename = ThisWorkbook.Path & Application.PathSeparator &Format(Now, "YYYY-MM-DD.txt") strMsg = Format(Now, "YYYY-MM-DD hh:mm:ss") & " 关闭工作簿 " &Wb.Name WriteInfo strFilename, strMsg End Sub
Private Sub xlapp_WorkbookOpen(ByVal Wb AsWorkbook) strFilename = ThisWorkbook.Path & Application.PathSeparator &Format(Now, "YYYY-MM-DD.txt") strMsg = Format(Now, "YYYY-MM-DD hh:mm:ss") & " 打开了工作簿 "& Wb.Name WriteInfo strFilename, strMsg End Sub
Sub WriteInfo(strFullName As String, strMsgAs String) On Error Resume Next Open strFullName For Append As #1 'Open语句,打开指定文件,以追加方式写入 Print #1, strMsg '写入日志内容 Close #1 '关闭文件 End Sub
日志内容如下图:
代码保存后,就可以进行测试了:
1.可以直接关闭EXCEL再重新打开进行测试。 2.如果不嫌麻烦的话可以直接在加载宏取消勾选,确定,再勾选,再确定
3.直接运行加载宏中的Workbook_Open过程
如果实在没有运行的话,还是关闭EXCEL再次重新打开吧。
对了,日志是保存在加载宏文件所在的位置,文件名是YYYY-MM-DD.txt格式。
还是有问题的话就下载我的附件测试吧(象征性的收10BB)。
demo1.rar
(15.84 KB, 下载次数: 23, 售价: 10 个金币)
|