是否可以对已在 Word 中打开的文档自动执行另存为过程?我在 FileMaker 数据库和 Word 文档之间使用 OLE 链接。文档被触发从 FileMaker 中打开,但现在我需要编写一个小片段 (C#) 来自动执行另存为过程并关闭 Word。这是可能的还是必须由自动化脚本打开自动化正在使用的文档?
1 回答
是的,但这取决于您要达到的目标。
我对 Word 的 normal.dot 文件做了类似的事情,在每个打开的 Word 文档(学生下载工作文件)上自动运行一个宏,这样他们就“被迫”将他们的工作保存到他们正确的工作文件夹中。否则,默认值始终是 Window 的临时文件夹。正如您所了解的,如果您不另存为并处理文档,您会将所有工作保存在文件的临时副本上,当您注销时,整个文件都会丢失!
如果这与您所追求的相似,请执行以下操作:
[1] 打开 Word 作为一个空文档(即:打开 Word 应用程序而没有实际的 Word 文件) [2] 按 ALT-F11 打开 Visual Basic for App (VBA) [3] 展开 NORMAL 文件夹(它可能叫什么否则),但我们需要将此宏保存到默认的 DOT 文件中。[4] 双击“ThisDocument” [5] 应该会打开一个文档宏窗口 [6] 粘贴以下代码:
Private Sub Document_Open()
MsgBox "Make sure you do a FILE -> SAVE-AS before starting your work!", vbCritical + vbOKOnly, "WARNING!"
End Sub
[7] 关闭 Word 并确保更新 NORMAL.DOT 文件
下次您打开 Word 文档时,系统会自动要求您确保在继续之前保存您的工作。
当然,在您的情况下,当您退出 word 文档时,您需要一个类似的宏来启动,以确保它是另存为。
在那种情况下,使用这样的东西......
ActiveDocument.SAVEAS FileName:= _
"<YOUR NETWORK OR FOLDER>myfile.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
并将其放在 Document_Close() 或 AutoClose() 事件中。我会让你决定哪一个是合适的。