我在Word中创建了一个简单的菜单,该菜单打开了许多内置了各种宏的Word文件。通过菜单打开某些宏时,它们的功能正常(例如,在Private Sub Document_Open
上显示的表格),但其他代码(忽略有关在无宏的环境中保存的警告的代码)将被忽略。
似乎也发生了其他问题,例如有关Word“无法触发事件”的调试错误,但仅在通过菜单打开文件时才发生。菜单所做的只是使用Documents.Open
并打开文件。
当用户打开不带菜单的文件时,不会发生任何问题(关于在无宏的环境中保存的警告,关于触发事件的错误)。
任何帮助将不胜感激!我希望不必为了可用性而完全废弃菜单,因为菜单中有很多文件可以用作索引。
以下代码:
If ComboBox1.Text = "- Full title page" Then
Documents.Open ("A:/Workgroup Documents/Folder 1/templates/name of file.docm")
End If
打开的文档中的代码( ThisDocument 模块):
Private WithEvents App As Word.Application
Option Explicit
Dim sDocName As String
Dim kcsval As String
Private Sub Document_Open()
frmFooters.Show
Set App = Word.Application
CATform.Show
On Error Resume Next
Documents("J:\Workgroup Documents\Edited Transcript\templates\menu.docm").Close SaveChanges:=wdDoNotSaveChanges
FixSaveError
End Sub
然后是一些表单,以及处理保存错误的模块和类模块。模块:
Option Explicit
Dim MyClass As New Class1
Sub FixSaveError()
Set MyClass.App = Word.Application
End Sub
Class模块( Class1 ):
Public WithEvents App As Word.Application
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, _
SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = wdAlertsNone
ActiveDocument.Save
Application.DisplayAlerts = wdAlertsAll
End Sub
当从docm中另存为docx时,模块和类模块的作用完全是为了消除有关在无宏环境中进行保存的警告消息。
在Document_Open
上打开的表单如果到达的话效果很好(“错误触发事件”错误有时会阻止它到达那里,但仅在某些情况下且仅在某些计算机上-仅 (使用菜单打开文件)。