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

VSTO C#Word 2016:如何在不保存文档的情况下重命名文档?,c#,ms-word,vsto,C#,Ms Word,Vsto,我需要一些帮助。 我正在尝试在调用之前重命名当前word文档: Globals.ThisAddIn.Application.CommandBars.ExecuteMso("FileEmailAsPdfEmailAttachment"); 实际上,我想这样做是为了更改附件的名称,否则它就是默认的文件名。 关键的一点是,我不想保存为新文件中的文档。 我尝试了以下方法,但没有成功: Globals.ThisAddIn.Application.ActiveDocument.ActiveWindow.C

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

Globals.ThisAddIn.Application.CommandBars.ExecuteMso("FileEmailAsPdfEmailAttachment");
实际上,我想这样做是为了更改附件的名称,否则它就是默认的文件名。 关键的一点是,我不想保存为新文件中的文档。 我尝试了以下方法,但没有成功:

Globals.ThisAddIn.Application.ActiveDocument.ActiveWindow.Caption = "FOO";
有什么想法吗?
提前感谢您的帮助。

好的,这是我解决这个问题的方法,希望能帮助其他人:

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

如果不保存Word文档,则无法重命名该文档。保存它(可能作为临时文件),关闭它,然后在以后删除它。感谢您的重播。不幸的是,涉及的文档是另一个业务逻辑,如果将其保存在tmp文件中,我将丢失它。否则,是否有一种方法可以在ExecuteMso(“FileEmailAsPdfEmailAttachment”)方法中更改附件名称?我不知道。你可以试着研究一下前景。我也不知道使用
Range.WordOpenXML
来“提取”文档内容是否有帮助,因为它可以流式传输。或者将内容复制到另一个(新)文档中,保存并发送?也许这是唯一的方法。但是调用“FileEmailAspdEmailAttachment”比将活动文档转换为pdf并创建新的电子邮件要快得多,也容易得多…