Excel打开的文档历史记录日志 - AddIn

时间:2014-05-14 07:48:56

标签: excel vba excel-vba

如果最终是通用的,请提前道歉。我对此做了一些研究,并得出了一个完整的空白。

Excel很棒,我喜欢Excel。这么多,以及"最近的文件"部分对我来说几乎没用,因为我在疯狂的地点使用那么多的电子表格。

我一直在研究一种在打开时记录(使用VBA作为AddIn)文档的方法。即使它与带有日期的文本文件一样简单,但我无法弄清楚如何获得VBA代码"知道"当一个文件被打开时(与输出到文本文件一起,我希望它在这个阶段完成)。

有没有办法让VBA在excel实例中查找此操作?

1 个答案:

答案 0 :(得分:2)

以下步骤(改编自http://www.cpearson.com/excel/AppEvent.aspx的优秀帖子)是“最低限度可行”的方式,可以满足您的需求。

  1. 打开新工作簿
  2. 打开VB编辑器
  3. 插入一个类模块;在属性窗口中,将类名设置为CExcelEvents
  4. 在类模块中添加以下代码:
  5.     Private WithEvents App As Application
    
        Private Sub Class_Initialize()
            Set App = Application
            MsgBox "initialized the class!"
        End Sub
    
        Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
            MsgBox "New Workbook was opened: " & Wb.Name
        End Sub
    

    5.右键单击项目浏览器中的“ThisWorkbook”元素,然后选择“查看代码”
    6.添加以下代码:

    Private XLApp As CExcelEvents
    
    Private Sub Workbook_Open()
        Set XLApp = New CExcelEvents
    End Sub
    

    这将创建一个CExcelEvents类的实例,并在加载addIn时“打开事件处理”。

    最后,将文件保存为myEvents.xlam在存储addIns的位置 - 这取决于您的计算机......

    如果您现在关闭文件,并添加addIn(再次,取决于您的环境,无论是来自Developer功能区还是Tools菜单),您应该会看到一个“初始化类!”的对话框。这表明addIn已正确安装并正常工作。

    现在,当您打开工作簿时,将出现另一个消息框:“已打开新工作簿:”,并带有名称。

    显然,您将要删除消息框,并添加一些“有用”代码,以执行您想要执行的操作(例如,将工作簿的名称记录到文件中)。这听起来像你不需要后者的帮助 - 如果我错了,请告诉我。