处理另一个加载项的提示
Handling the prompts of another Add-In
以下代码是我创建的 Excel 加载项的一部分,将为我们打开的当前数据提取创建一个文件名。
Sub ExtractSave()
'
If InStr(LCase$(ActiveWorkbook.name), "extract") > 0 Then
Exit Sub
Else
Dim MyDir As String, fn As String
MyDir = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\Extract Files" ' change this to valid path
If Len(Dir(MyDir, vbDirectory)) = 0 Then MkDir MyDir
fn = MyDir & "\Extract - " & Format(Now, "mm-dd-yyyy hh_mm")
ActiveWorkbook.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook
End If
End Sub
当我关闭工作簿时,确实需要进行保存,因为将对工作簿进行更改。所有这一切都很好。问题是该公司有一个 .COM 加载项,所有文档都需要 运行。它使用特定的安全级别标识符标记文档页脚。虽然我不需要绕过这个,但我想知道是否可以编写代码来复制出现此框时输入的代码?有两个按钮,是 和取消。弹出窗口中的默认按钮是 Yes。我确实尝试添加
Application.DisplayAlerts = False
If Me.Saved = False Then Me.Save
Application.DisplayAlerts = True
进入Workbook_BeforeClose私有Sub,但是op还是出现了。此外,如果我是正确的,这段代码将不适用于已保存的工作簿,因为这是来自加载项的 运行ning。
我找不到与此特定问题相关的任何等效信息,因此我们将不胜感激。另外,我不知道还有哪些其他信息可以帮助您找到解决方案,所以请提问,不要因为我遗漏了什么而投反对票。
事件顺序:
- 将数据导入新工作簿
- 运行 ExtractSave 例程
- 查看 .COM 插件弹出窗口(需要按下 YES 按钮,YES 是
默认按钮)
- 用户对工作簿执行职责
- 点击关闭
- 提示保存对工作簿的更改(同样,默认为 YES,
需要这个 "clicked")
- 再次查看 .COM 插件弹出窗口(需要按下 YES 按钮,YES
是默认按钮)
什么 VBA 代码可用于在保存工作簿时自动单击 .COM 加载项的“是”按钮?
来自评论:
在第一个保存事件(OP 列表中的#2)发生时,在此行 ActiveWorkbook.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook
之前添加 Application.SendKeys ("~")
。
对于 #7 .COM 插件弹出窗口,在 Workbook_BeforeSave
事件中添加 Application.SendKeys ("~")
没有帮助(我希望有人可以帮助我们修复它):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SendKeys "~"
End Sub
以下代码是我创建的 Excel 加载项的一部分,将为我们打开的当前数据提取创建一个文件名。
Sub ExtractSave()
'
If InStr(LCase$(ActiveWorkbook.name), "extract") > 0 Then
Exit Sub
Else
Dim MyDir As String, fn As String
MyDir = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\Extract Files" ' change this to valid path
If Len(Dir(MyDir, vbDirectory)) = 0 Then MkDir MyDir
fn = MyDir & "\Extract - " & Format(Now, "mm-dd-yyyy hh_mm")
ActiveWorkbook.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook
End If
End Sub
当我关闭工作簿时,确实需要进行保存,因为将对工作簿进行更改。所有这一切都很好。问题是该公司有一个 .COM 加载项,所有文档都需要 运行。它使用特定的安全级别标识符标记文档页脚。虽然我不需要绕过这个,但我想知道是否可以编写代码来复制出现此框时输入的代码?有两个按钮,是 和取消。弹出窗口中的默认按钮是 Yes。我确实尝试添加
Application.DisplayAlerts = False
If Me.Saved = False Then Me.Save
Application.DisplayAlerts = True
进入Workbook_BeforeClose私有Sub,但是op还是出现了。此外,如果我是正确的,这段代码将不适用于已保存的工作簿,因为这是来自加载项的 运行ning。
我找不到与此特定问题相关的任何等效信息,因此我们将不胜感激。另外,我不知道还有哪些其他信息可以帮助您找到解决方案,所以请提问,不要因为我遗漏了什么而投反对票。
事件顺序:
- 将数据导入新工作簿
- 运行 ExtractSave 例程
- 查看 .COM 插件弹出窗口(需要按下 YES 按钮,YES 是 默认按钮)
- 用户对工作簿执行职责
- 点击关闭
- 提示保存对工作簿的更改(同样,默认为 YES, 需要这个 "clicked")
- 再次查看 .COM 插件弹出窗口(需要按下 YES 按钮,YES 是默认按钮)
什么 VBA 代码可用于在保存工作簿时自动单击 .COM 加载项的“是”按钮?
来自评论:
在第一个保存事件(OP 列表中的#2)发生时,在此行 ActiveWorkbook.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook
之前添加 Application.SendKeys ("~")
。
对于 #7 .COM 插件弹出窗口,在 Workbook_BeforeSave
事件中添加 Application.SendKeys ("~")
没有帮助(我希望有人可以帮助我们修复它):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SendKeys "~"
End Sub