5

我通过自动化创建 word 文档,并使用来自 c# (.net4) 的 office Interop 进行邮件合并。合并效果很好,用户可以根据需要接收创建的文档。到目前为止一切都很好。客户端现在请求,如果他尝试保存生成的文件(通过保存文件对话框),文档的文件名已经预填充。

我已经尝试了一些显而易见的事情,例如设置 Document-instance 的 Name 属性和其他属性,我也搜索了一个解决方案,但到目前为止,我无法设置 word 文件的文件名(不保存它)。

有人知道如何实现这一目标吗?我觉得如果它可以工作,客户会很高兴,我也已经花了很多时间在这上面(我不得不承认自动化这个词我没有太多经验)。

4

2 回答 2

6

如果您设置文档的 Title 属性,当您选择 Save As 时,这就是将使用的文档名称。您还可以设置默认保存位置。在 VBA 中

Set doc = ActiveDocument

sTitle = doc.BuiltInDocumentProperties("Title").Value
doc.BuiltInDocumentProperties("Title").Value = "A different title"

但是,这仅适用于第二次(及以后)保存尝试。第一次尝试将始终使用模板中的标题(如果有)或文档第一行中的内容(如果没有)。请参阅此答案的结尾以获得更好的解决方案。

但是请注意,您必须在“另存为”之前对文档进行一些更改才能使新标题生效。

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();

这将打开标准的“另存为”对话框,设置默认文件名(不是您对“标题”属性的期望,但这就是它的作用),然后打开对话框。

于 2012-11-23T16:12:25.577 回答
0

文档
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas%28v=vs.80%29.aspx
似乎说您可以指定文件名或 am我错过了什么?

于 2012-11-23T15:57:30.687 回答