VSTO C#Word 2016:如何在不保存文档的情况下重命名文档?

问题描述 投票:0回答:1

我需要一些帮助。我正在尝试在调用前重命名当前的Word文档:

Globals.ThisAddIn.Application.CommandBars.ExecuteMso("FileEmailAsPdfEmailAttachment");

实际上,我想这样做是为了更改附件的名称,否则它是默认文件名。关键是我不想将文档另存为新文件。我尝试了以下方法,但没有成功:

Globals.ThisAddIn.Application.ActiveDocument.ActiveWindow.Caption = "FOO";

有什么想法吗?预先感谢您的帮助。

c# ms-word vsto
1个回答
0
投票

好,这是我解决该问题的解决方案,希望对其他人有所帮助:

   private void buttonPDFToEmail_Click(object sender, RibbonControlEventArgs e)
{

   /* 
    * using Word = Microsoft.Office.Interop.Word;
    * using Outlook = Microsoft.Office.Interop.Outlook; => if running a Word VSTO projet, need to add that reference in solution's references.
    */

    // Word application.
    Word.Application wApp = Globals.ThisAddIn.Application;

    // Word document.
    Word.Document wDoc = wApp.ActiveDocument;

    // instantiating Outlook application.
    Outlook.Application oApp = new Outlook.Application();

    // Generating the PDF filename.
    string filePDFName =
        (!String.IsNullOrEmpty(editBox_filePDFTitle.Text) & !String.IsNullOrWhiteSpace(editBox_filePDFTitle.Text)) ?
        editBox_filePDFTitle.Text :
        "PROJET";

    if (checkBox_addDate.Checked)
    {
        filePDFName += (char)32 + DateTime.Now.ToString("dd-MM-yyyy");
    }

    object fileName = @"C:\tmp\" + filePDFName;

    // Export activeDocument as PDF file.
    wDoc.ExportAsFixedFormat(
        fileName.ToString(),
        Word.WdExportFormat.wdExportFormatPDF
        );

     // Create a new email with no attachments.
    Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

    // Adding our PDF file as attachement.
    oMailItem.Attachments.Add(fileName.ToString()+".pdf");

    // using System.IO;
    // Deleting the tmp PDF file.
    File.Delete(fileName.ToString() + ".pdf");

    // Displaying Outlook.
    oMailItem.Display(true);
}
© www.soinside.com 2019 - 2024. All rights reserved.