我想在我的Word .docm文件中将此代码添加到ThisDocument
。
Sub AutoClose()
ActiveDocument.Saved = False
End Sub
代码会阻止"您要保存吗?"出现对话框。我只是想在文档中的某个点击事件之后添加它,因为我也禁用了Save As
和Save
,如果我添加所有三个,那么我就不能自己保存文件。 (事实上,由于这个原因,我无法添加所有三个。)
如果我将上面的代码添加到文档中的最后一次点击事件后才能激活,但它应该没问题,因为那时我仍然可以保存我所做的更改,只要我没有点击该触发器结束了。防止人们关闭并获得"你想保存吗?"最后的对话对我来说是最重要的。
当另一个点击事件触发时,有没有办法将上述代码写入ThisDocument?或换句话说,有没有办法让点击事件使上述代码生效?
这里是最后一个我想要触发上述代码的子(激活?被写入?被启用?被取消注释?)
Private Sub formatSaveB_Click()
ActiveDocument.Bookmarks("mark3").Select
Selection.Delete
ActiveDocument.InlineShapes(1).Delete
With Dialogs(wdDialogFileSaveAs)
.Format = wdFormatFilteredHTML
.Show
End With
End Sub
事件发生后,我想要
Sub AutoClose()
ActiveDocument.Saved = False
End Sub
在ThisDocument中处于活动状态 - 但之前 。
答案 0 :(得分:1)
如果尚未启用VBA项目的编程访问权限。但是,要在其他代码运行后添加您描述的子代码,请将此代码添加到您的子代码中:
ThisDocument.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString "Sub AutoClose(): ActiveDocument.Saved = False: End Sub"
这应该可以解决问题。您可能需要修改一下,我无法完全测试,因为我在禁用VBA项目的编程访问的环境中,但这应该是您想要做的事情。
轻微编辑:如果您想阻止"是否要保存您所做的更改..."关闭单词时,您需要执行以下操作:
ThisDocument.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString "Private Sub Document_Close(): ActiveDocument.Saved = True: End Sub"
关闭文档时会阻止显示该消息。
答案 1 :(得分:0)
我不能完全遵循你的逻辑,但我认为你所问的是这样的:
ThisDocument模块
Public event1 As Boolean
Public event2 As Boolean
Sub AutoOpen()
event1 = False
event2 = False
End Sub
活动程序
Private Sub formatSaveB_Click()
'// Event code here...
event1 = True
End Sub
Private Sub otherEvent_Click()
'// Event code here...
event2 = True
End Sub
然后在你的最后一个
中Sub AutoClose()
'// Saved state only set to true if previous 2 events have been executed.
ActiveDocument.Saved = (event1 And event2)
End Sub
答案 2 :(得分:0)
在要禁用对话框的事件处理程序中设置一个标志,然后在退出时对其进行测试。请注意,如果文档已经保存,则必须检查标记 或 ,以避免在文档实际已保存但未触发formatSaveB_Click时提示)。假设formatSaveB_Click()
在ThisDocument中。
在ThisDocument中:
Private clicked As Boolean
Sub AutoClose()
ActiveDocument.Saved = clicked Or ActiveDocument.Saved
End Sub
Private Sub formatSaveB_Click()
ActiveDocument.Bookmarks("mark3").Select
Selection.Delete
ActiveDocument.InlineShapes(1).Delete
With Dialogs(wdDialogFileSaveAs)
.Format = wdFormatFilteredHTML
.Show
End With
'Set your flag here.
clicked = True
End Sub
答案 3 :(得分:0)
好吧,在我发现他的建议有一个拼写错误之后,从MattB添加这条线就行了,我删除了额外的字母:)
ThisDocument.VBProject.VBCompontents("ThisDocument").CodeModule.AddFromString "Private Sub Document_Close(): ActiveDocument.Saved = True: End Sub"
我只是像其他人一样粘贴它来尝试它,并且它有VBCompontents
我直到现在再次查看它才发现,一旦我删除了额外的t
,答对了。
正是我需要的。非常感谢。