joh*_*gan 1 c# interop ms-word
我正在使用C#和Microsoft.Office.Interop.Word执行以下操作
如果使用此方法打开文档(其中FileName是文件名,AddToRecentFiles为false且所有其他均为Missing.Value),则此方法可以正常工作
Document Open(
[In] ref object FileName,
[In, Optional] ref object ConfirmConversions,
[In, Optional] ref object ReadOnly,
[In, Optional] ref object AddToRecentFiles,
[In, Optional] ref object PasswordDocument,
[In, Optional] ref object PasswordTemplate,
[In, Optional] ref object Revert,
[In, Optional] ref object WritePasswordDocument,
[In, Optional] ref object WritePasswordTemplate,
[In, Optional] ref object Format,
[In, Optional] ref object Encoding,
[In, Optional] ref object Visible,
[In, Optional] ref object OpenAndRepair,
[In, Optional] ref object DocumentDirection,
[In, Optional] ref object NoEncodingDialog,
[In, Optional] ref object XMLTransform
);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我希望处理过程保持沉默,也就是说,我不想向用户显示该应用程序。通过将Visible设置为false可以轻松完成此操作。
但是,如果将Visible设置为false,则更新,保存并关闭文档,那么下次打开文档时,它将以草稿模式打开。我不希望在更新文档时更改视图模式。如果我的文档在程序处理之前处于“打印布局”模式,那么我希望下次打开它时,它保持在“打印布局”模式。
我现在的位置有两个选择:
使用visible = true打开文档并保持查看模式。
使用visible = false打开文档,并始终将视图模式设置为草稿。
有人对我有第三选择,这个选择使我可以在不向用户显示单词application的情况下更新文档的内容?
您可以从代码切换回打印布局视图:
using Word = Microsoft.Office.Interop.Word;
// Option 1: via Application object
Word.Application app = new Word.Application();
app.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView;
// Option 2: via Document object
Word.Document doc;
object objOne = 1;
doc.Windows.get_Item(ref objOne).View.Type = Word.WdViewType.wdPrintView;
Run Code Online (Sandbox Code Playgroud)
相当于VBA:
ActiveDocument.Windows(1).View = wdPrintView
Run Code Online (Sandbox Code Playgroud)
最佳实践是备份原始视图,然后在完成自动化任务后将其还原。
您没有显示代码,所以我们不知道您所做的确切修改。但是,某些自动化任务(如修改页眉/页脚)可能需要特定的视图。