【问题标题】:Excel Opened Documents History Log - AddInExcel 打开文档历史记录 - 插件
【发布时间】:2014-05-14 17:40:09
【问题描述】:

如果这最终是通用的,请提前道歉。我对此做了一些研究,完全空白。

Excel 很棒,我喜欢 Excel。以至于“最近的文档”部分对我来说几乎没有用处,因为我在大量的位置使用了那么多电子表格。

我一直在研究一种在打开文档时记录(使用 VBA 作为插件)文档的方法。即使它像带有日期的文本文件一样简单,但是我无法弄清楚如何在打开文件时让 VBA 代码“知道”(与输出到文本文件一起,这就是我想要的它在这个阶段做)。

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

【问题讨论】:

  • 我想你会在查看stackoverflow.com/q/8419728/1967396 时找到答案,尤其是指向cpearson.com/excel/AppEvent.aspx 的链接,它描述了如何做到这一点。
  • 所有这些工作表宏都启用了吗?如果不是,那么您打算如何举办活动
  • @mehow 我的理解是,如果您有一个运行应用程序事件的加载项,并且它是监视所有“工作簿打开”事件并记录它们的加载项,那么各个工作表不会需要启用。
  • @Floris 哦,我完全误解了应用程序的概念!你说得对!

标签: vba excel


【解决方案1】:

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

  1. 打开一个新工作簿
  2. 打开 VB 编辑器
  3. 插入一个类模块;在属性窗口中,将类名设置为CExcelEvents
  4. 在类模块中添加如下代码:
私有 WithEvents 应用程序作为应用程序 私有子类_Initialize() 设置应用程序 = 应用程序 MsgBox "初始化类!" 结束子 Private Sub App_WorkbookOpen(ByVal Wb As Workbook) MsgBox "新工作簿已打开:" & Wb.Name 结束子

5. 在项目资源管理器中右键单击“ThisWorkbook”元素,然后选择“查看代码”
6. 添加以下代码:

Private XLApp As CExcelEvents

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

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

最后,将文件另存为 myEvents.xlam 在存储插件的位置 - 这取决于您的机器...

如果您现在关闭文件并添加插件(同样,取决于您的环境,无论是来自开发者功能区还是工具菜单),您应该会看到一个对话框,上面写着“已初始化类!”。这表明插件已正确安装并正常工作。

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

显然,您将希望摆脱消息框,并放入一些“有用”的代码来执行您想做的任何事情(例如,将工作簿的名称记录到文件中)。在我看来,后者不需要帮助 - 如果我错了,请告诉我。

【讨论】:

  • 这正是我想要的,谢谢!确实检查了 Chip Pearson 的网站,但一定错过了(该网站真的是 VBA 的天赐之物!)
  • 是的 - Chip 的网站是一个极好的资源,但可以“丰富”。我之前链接的答案将您带到正确的位置,但即便如此,将这些东西完全变成您想要的东西也可能很棘手。我认为“最小的一段代码”可能会超出您今天的需要,因此我决定编写它。有一天我可能会自己使用它......很高兴它对你有用。
  • 这个答案+1。我认为许多未来的读者可能会发现这很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多