excel 跳过错误“文档在上次打开时导致严重错误”

hvvq6cgz  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(534)

是否可以跳过错误"文档导致了严重错误,最后一次打开"?我使用Excel打开Word文件。我想防止的情况,当例如PC重新启动,而运行宏,后来Word认为文件有问题。但我总是确信我的模板文件是好的(我使用只读方法)。跳过意味着选择"是"与VBA继续打开文件。设置显示警报为假是行不通的。谢谢!

Set wApp = CreateObject("Word.Application")
 With wApp
         .DisplayAlerts = False
         .Visible = False
         .ScreenUpdating = False
 End With
    • 编辑:**

我才发现,唯一的办法似乎是编辑注册表:How to programatically re-enable documents in the MS Office list of disabled files不幸的是,我不能修改注册表的宏,因为IT安全管理在一个公司。

68bkxrlz

68bkxrlz1#

我发现一个问题的解决方法并不优雅,但确实很简单。在Windows注册表中有一个“黑名单”(称为 * 禁用列表 *),其中包含Office上次打开时发现有问题的文件。解决方法是暂时更改文件名,而不是删除系统注册表中的条目。
对于初学者来说,示例代码会比描述更清楚,我认为:

' folder's path
  Dim fPath As String:     fPath = "D:\templates\"
' Word file to open
  Dim fName As String:     fName = "sample.docx"

  Dim fullFilePath As String
      fullFilePath =  fPath & fName

' temporary name
' I use here idea to add unique timestamp prefix
  Dim tempName As String
      tempName = VBA.Strings.Format(Now(), "yyMMdd_hhmmss_") & fName

  Dim fullTempFilePath As String
      fullTempFilePath =  fPath & tempName 

' temporary change
  Name fullFilePath As fullTempFilePath 

  Dim wApp as object ' late binding
  Set wApp = CreateObject("Word.Application")
  Set doc = wApp.Documents.Open(Filename:=fullTempFilePath)

 ' here some code to file manipulate
 ' ...
  doc.Close

 ' restore previous file name
  Name fullTempFilePath As fullFilePath 

 ' end 
  wApp.Quit
  Set wApp = Nothing

我会添加一些错误处理,以确保以前的文件名将被恢复。如果有人看到一个更好的想法,随时在这里分享。

n8ghc7c1

n8ghc7c12#

发生此问题的原因是,该文件包含在Microsoft Office程序的禁用文件列表中。如果文件导致严重错误(例如,导致程序在两次或多次尝试打开它的过程中意外关闭(崩溃)),则程序会将该文件添加到此列表中。此错误消息使您可以避免打开该文件时可能发生的潜在问题。
我建议禁用加载项。为此,请按照下列步骤操作:
1.在Excel或Word中,依次单击FileOptionsAdd-Ins
1.在“管理”列表中,单击COM Add-Ins,然后单击Go
1.在“COM Add-Ins”对话框中,清除列表中选定的任一加载项的复选框,然后单击“OK”。
1.重新启动应用程序(不在安全模式下)。
如果程序成功启动,则导致问题的就是您清除了复选框的加载项。如果完成这些步骤后程序没有启动,请通过清除其他加载项的复选框来重复这些步骤。
如果在测试了列出的所有加载项后程序没有启动,则问题与加载项无关。若要了解出现此问题的其他原因,请转到“参考”部分。
如果有问题的外接程序是第三方产品,建议您访问公司网站获取该外接程序的更新版本。如果没有更新版本可用,或者您不必使用该外接程序,则可以在“COM外接程序”列表中清除该复选框。
"The document caused a serious error the last time it was opened" when you open a file in Excel or Word文章中阅读更多相关信息。

相关问题