Как задать имя файла документа word, не сохраняя его из c# и автоматизации


Я создаю документы word с помощью автоматизации и mailmerge с помощью office Interop из c# (. net4). слияние работает хорошо, и пользователь получает созданный документ по своему желанию. Пока все идет хорошо. Теперь клиент запрашивает, что если он пытается сохранить сгенерированный файл (через диалог сохранения файла), то имя файла документа уже заполнено.

Я уже пробовал очевидные вещи, такие как установка свойства Name экземпляра документа и других свойств, я также гуглил для решение, но до сих пор я не мог установить имя файла word (без сохранения его).

Знает ли кто-нибудь способ, как этого достичь? Я чувствую, что клиент был бы очень рад, если бы это сработало, и я также потратил уже много времени на это (я должен признать, что автоматизация слова-это вещь, у меня нет большого опыта).

2 4

2 ответа:

Если вы задаете свойство 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();

Это открывает стандартный диалог "Сохранить как", задает имя файла по умолчанию (не то, что вы ожидали бы от свойства 'Title', но это то, что он делает) и открывает диалоговое окно.

Docs
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas%28v=vs.80%29.aspx
кажется, вы говорите, что вы можете указать имя файла или я что-то упустил?