gpt4 book ai didi

excel - 如何在启动时检索文件名

转载 作者:行者123 更新时间:2023-12-03 00:38:58 25 4
gpt4 key购买 nike

我试图在 Excel 根据文件名打开时有条件地启动用户表单。但是,我相信代码在文件完全启动之前运行,给我一个错误。

Private Sub Workbook_Open()
Dim name As String
name = ActiveWorkbook.FullName
If InStr(name, "Export Checksheet") > 0 Then
UserForm1.Show
End If
End Sub

在已打开的文件上测试此功能运行良好,但尝试让它在文件打开时自然运行会导致运行时错误“91”,并将我指向定义名称的行变量。

最佳答案

看起来 ThisWorkbook 正在加载您打开的任何其他工作簿,因此 ActiveWorkbookNothing 并且任何成员对其进行调用都会引发错误 91。

Workbook_Open 处理程序将仅针对 ThisWorkbook(托管 VBA 项目的文档)运行 - 您需要的是在应用程序级别连接另一个处理程序,这样您就可以在任何任何工作簿打开时运行代码。

更改您的 Workbook_Open 处理程序,以将对 Application 实例的引用捕获到模块级 WithEvents 对象变量中:

Option Explicit
Private WithEvents app As Excel.Application

Private Sub Workbook_Open()
Set app = Me.Application
End Sub

现在从左侧下拉列表中选择 app,并为 WorkbookOpen 事件创建一个处理程序 - 就是您想要的位置验证是否需要弹出该对话框:

Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
If InStr(Wb.FullName, "Export Checksheet") > 0 Then
With New UserForm1
.Show
End With
End If
End Sub

请注意,应用程序范围的事件为您提供了 Workook 对象,因此您无需关心它是否是 ActiveWorkbook .

关于excel - 如何在启动时检索文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com