处理另一个加载项

时间:2016-01-18 18:15:22

标签: excel-vba excel-2007 vba excel

以下代码是我创建的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加载项,需要在所有文档上运行。它使用特定的安全级别标识符标记文档页脚。虽然我不需要绕过这个,但我想知道是否有可能编写代码,当这个框出现时会复制命中输入?有两个按钮,取消。弹出窗口中的默认按钮为。我确实尝试添加

Application.DisplayAlerts = False
If Me.Saved = False Then Me.Save
Application.DisplayAlerts = True

进入Workbook_BeforeClose私有Sub,但是op仍然出现了。此外,如果我是正确的,这段代码将无法用于已保存的工作簿,因为它是从加载项中运行的。

我无法找到针对此特定问题的任何等效信息,因此我们将不胜感激。此外,我不知道在您寻求解决方案的帮助中有哪些其他信息会有用,所以请不要投票,因为我错过了什么。

活动顺序:

  1. 将数据导入新工作簿
  2. 运行ExtractSave例程
  3. 请参阅.COM插件弹出窗口(需要按下YES按钮,YES是 默认按钮)
  4. 用户对工作簿执行职责
  5. 点击关闭
  6. 提示将更改保存到工作簿(同样,默认为YES, 需要这个"点击")
  7. 再次看到.COM插件弹出窗口(需要按下YES按钮,YES 是默认按钮)
  8. 在保存工作簿时,有哪些VBA代码可以自动单击.COM加载项的YES按钮?

1 个答案:

答案 0 :(得分:1)

来自评论:

当第一个保存事件(OP中列表中的#2)发生时,在此行Application.SendKeys ("~")之前添加ActiveWorkbook.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook

对于#7 .COM插件弹出窗口,在Application.SendKeys ("~")活动中添加Workbook_BeforeSave并没有帮助(我希望有人可以帮我们解决):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

     SendKeys "~"  

End Sub