我通过自动化和mailmerge与c#(。net4)的办公室Interop创建word文档。合并效果很好,用户可以根据需要接收创建的文档。到目前为止一切都很好。 客户端现在请求,如果他试图保存生成的文件(通过保存文件对话框),则说明文档的文件名已经预先填写。
我已经尝试过显而易见的事情,例如设置Document-instance的Name属性和其他属性,我也搜索了一个解决方案,但到目前为止,我无法设置word文件的文件名(不保存)。
有人知道如何实现这一目标吗?我觉得客户会非常高兴,如果它可以工作,我也花了很多时间在这上面(我不得不承认自动化是一件我没有太多经验的事情。)
答案 0 :(得分:5)
如果设置文档的Title属性,则选择“另存为”时,即将使用的文档名称。您还可以设置默认保存位置。在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
正如HCL在C#中所说,您可以使用以下代码设置默认文件名(仅限对话框):
dynamic dialog = wordApp.Dialogs[WdWordDialog.wdDialogFileSummaryInfo];
dialog.Title = "MyTitle";
dialog.Execute();
这将打开标准的“另存为”对话框,设置默认文件名(不是您对“标题”属性的期望,而是它的作用),然后打开对话框。
答案 1 :(得分:0)
文档
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas%28v=vs.80%29.aspx
似乎说你 CAN 指定文件名或者我错过了什么?