如何设置Word文档的文件名,不从C#和自动化其保存(How to set the file nam

2019-07-04 01:41发布

我创建通过自动化和邮件合并办公互操作word文档从C#(.NET4)。 合并运作良好,并按照他的期望用户接收创建的文档。 到目前为止,一切都很好。 现在,客户端请求,如果他试图保存生成的文件(通过保存文件对话框),该文件的文件名已预填。

我已经尝试了明显的事情,如设置文件实例和其他属性的名称属性,我也用Google搜索了一个解决方案,但到现在为止,我是不是能够设置Word文件的文件名(不保存它)。

是否有人知道一种方法如何实现这一目标? 我觉得客户会很高兴,如果它会工作,我也已经花了很多时间在这(我不得不承认这个词自动化是一件事我没有很多的经验)。

Answer 1:

如果您设置文档的标题属性,当你选择另存为,这是将要使用的文件名。 您还可以设置默认的保存位置。 在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();

这将打开标准的“另存为”对话框中,设置默认的文件名(不是你会从“标题”属性会发生什么,但是这就是它),并打开对话框。



Answer 2:

该文档
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