VSTO C#Word 2016:如何在不保存文档的情况下重命名文档?
我需要一些帮助。 我正在尝试在调用之前重命名当前word文档: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
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并创建新的电子邮件要快得多,也容易得多…