我创建通过自动化和邮件合并办公互操作word文档从C#(.NET4)。 合并运作良好,并按照他的期望用户接收创建的文档。 到目前为止,一切都很好。 现在,客户端请求,如果他试图保存生成的文件(通过保存文件对话框),该文件的文件名已预填。
我已经尝试了明显的事情,如设置文件实例和其他属性的名称属性,我也用Google搜索了一个解决方案,但到现在为止,我是不是能够设置Word文件的文件名(不保存它)。
是否有人知道一种方法如何实现这一目标? 我觉得客户会很高兴,如果它会工作,我也已经花了很多时间在这(我不得不承认这个词自动化是一件事我没有很多的经验)。
如果您设置文档的标题属性,当你选择另存为,这是将要使用的文件名。 您还可以设置默认的保存位置。 在VBA
Set doc = ActiveDocument
sTitle = doc.BuiltInDocumentProperties("Title").Value
doc.BuiltInDocumentProperties("Title").Value = "A different title"
然而,这仅适用于第二(或更高版本)保存尝试(S)。 第一次尝试将始终使用标题从模板,如果有的话,还是从内容如果没有该文件的第一行。 看到这个答案了更好的解决方案的结束。
但是请注意,你必须做出一些改变文档另存为前新标题生效。
Sub SetSummaryInfo()
Dim dp As Object
Dim sTitle As String
If Documents.Count > 0 Then
Set dp = Dialogs(wdDialogFileSummaryInfo)
' Retrieve value of "Title" into a variable.
sTitle = dp.Title
' Set "Title" to a new value.
dp.Title = "My Title"
' Set the value without showing the dialog.
dp.Execute
' Save the changes
'ActiveDocument.Save
End If
End Sub
由于在C#中指出的HCL,您可以使用此代码(仅适用于对话框)设置默认文件名:
dynamic dialog = wordApp.Dialogs[WdWordDialog.wdDialogFileSummaryInfo];
dialog.Title = "MyTitle";
dialog.Execute();
这将打开标准的“另存为”对话框中,设置默认的文件名(不是你会从“标题”属性会发生什么,但是这就是它),并打开对话框。
该文档
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas%28v=vs.80%29.aspx
似乎是说,你可以指定一个文件名还是我失去了一些东西?
文章来源: How to set the file name of a word document without saving it from c# and automation