我想添加選項以在Word 2007中導出爲新的文件格式。理想情況下,如果該選項可以是Word 2007中的另一種文件格式作爲用戶可以在文件格式下拉框中選擇的對話框。將自定義文件格式添加到Word 2007另存爲對話框
雖然我有很多.NET的經驗,但我還沒有爲MS Office做過多的開發。在高層次上,我應該看看如何將另一個另存爲格式添加到使用.NET的Word 2007中?
我想添加選項以在Word 2007中導出爲新的文件格式。理想情況下,如果該選項可以是Word 2007中的另一種文件格式作爲用戶可以在文件格式下拉框中選擇的對話框。將自定義文件格式添加到Word 2007另存爲對話框
雖然我有很多.NET的經驗,但我還沒有爲MS Office做過多的開發。在高層次上,我應該看看如何將另一個另存爲格式添加到使用.NET的Word 2007中?
你基本上在Word 2007中有兩個選項來添加自己的自定義文件導出過濾器:
從Office 2007 SP2上,你可以包括一個基於的OpenXML出口過濾器,詳情請參閱Introducing the Open XML Format External File Converter for 2007 Microsoft Office System SP2。
對於所有Word版本(回Word 97或者甚至更早),您可以使用作爲一個Win32 DLL中實現一個基於RTF出口過濾器:How to Obtain the WinWord Converter SDK (GC1039)
無法通過對象模型保存爲自定義格式或更改SaveAs對話框。眼下,這看起來像唯一的出路http://msdn.microsoft.com/en-us/library/aa338206.aspx
看看在Microsoft.Office.Core.FileDialog
接口和其Filters
屬性(類型爲Microsoft.Office.Core.FileDialogFilters
),您可以在其中添加和刪除過濾器。它們包含在Office.dll中的Visual Studio Tools for Office 12中。
至於得到正確FileDialog
對象,首先獲取Microsoft.Office.Interop.Word.Application實例(通常是通過創建一個新的ApplicationClass
,或等效,使用VBA的CreateObject
),並調用它application
。然後做類似如下:
Microsoft.Office.Core.FileDialog dialog = application.get_FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogSaveAs);
dialog.Title = "Your Save As Title";
// Set any other properties
dialog.Filters.Add(/* You Filter Here */);
// Show the dialog with your format filter
if(dialog.Show() != 0 && fileDialog.SelectedItems.Count > 0)
{
// Either call application.SaveAs(...) or use your own saving code.
}
實際的代碼可以是在COM加載項,或使用COM來打開/與Word交互的外部程序。至於替換內置的另存爲對話框,您還需要在某處(VBA和此代碼等)處理Microsoft.Office.Interop.Word.Application.DocumentBeforeSave
事件來攔截默認行爲。
下面是一個例子 '另存爲' 處理程序:
private void application_DocumentBeforeSave(Microsoft.Office.Interop.Word.Document document, ref bool saveAsUI, ref bool cancel)
{
// Be sure we are only handling our document
if(document != myDocument)
return;
// Allow regular "Save" behavior, when not showing the "Save As" dialog
if(!saveAsUI)
return;
// Do not allow the default UI behavior; cancel the save and use our own method
saveAsUI = false;
cancel = true;
// Call our own "Save As" method on the document for custom UI
MySaveAsMethod(document);
}
你測試嗎?我不認爲msoFileDialogSaveAs可以添加過濾器。 – 2010-01-12 08:31:23
啊你說得對。我之前已將文件擴展名添加到msoFileDialogOpen,但Word不允許對「另存爲」對話框進行新的擴展。 其餘代碼可以工作,但是您需要爲實際的行爲擴展使用不同的「另存爲」對話框,例如'System.Windows.Forms.SaveFileDialog'。 – Joe 2010-01-12 15:20:09