VSTO C# Word 2016: как переименовать документ, не сохраняя его? - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужна помощь, пожалуйста. Я пытаюсь переименовать текущий документ Word перед вызовом:

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

На самом деле я хочу сделать это, чтобы изменить имя вложения, которое в противном случае является именем файла по умолчанию. Важным моментом является то, что я не хочу сохранять документ в новом файле. Я безуспешно пробовал следующее:

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

Любая идея, пожалуйста ? Заранее благодарим за помощь.

1 Ответ

0 голосов
/ 13 февраля 2020

Хорошо, вот мое решение, чтобы решить эту проблему, надеясь, что это может помочь кому-то еще:

   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);
}
...