5

C# (.net4) から office Interop を使用して自動化と差し込み印刷を介して Word 文書を作成します。マージはうまく機能し、ユーザーは作成されたドキュメントを希望どおりに受け取ります。これまでのところ、すべて順調です。クライアントは、生成されたファイルを (ファイルの保存ダイアログを介して) 保存しようとすると、ドキュメントのファイル名が既に入力されていることを要求します。

Document-instance の Name プロパティやその他のプロパティを設定するなど、明らかなことをすでに試しました。また、解決策をグーグルで検索しましたが、これまで、単語ファイルのファイル名を設定できませんでした (保存せずにそれ)。

誰かがこれを達成する方法を知っていますか? それが機能すればクライアントはとても喜んでくれると思いますし、私もこれにかなりの時間を費やしました (自動化という言葉は私があまり経験していないことを認めざるを得ません)。

4

2 に答える 2

6

ドキュメントの Title プロパティを設定した場合、[名前を付けて保存] を選択すると、それが使用されるドキュメント名になります。デフォルトの保存場所を設定することもできます。VBAで

Set doc = ActiveDocument

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

ただし、これは 2 回目以降の保存試行でのみ機能します。最初の試行では常に、テンプレートのタイトルがあればそれを使用し、ドキュメントの最初の行のコンテンツがなければそれを使用します。より良い解決策については、この回答の最後を参照してください。

ただし、新しいタイトルを有効にするには、名前を付けて保存する前にドキュメントに変更を加える必要があることに注意してください。

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
は、ファイル名を指定できるか、または何か足りない?

于 2012-11-23T15:57:30.687 に答える