将自定义文件格式添加到Word 2007另存为对话框

时间:2009-12-10 01:21:13

标签: .net ms-word ms-office

我想在Word 2007中添加导出为新文件格式的选项。理想情况下,如果该选项可能是Word 2007“另存为”对话框中的另一种文件格式,用户可以在文件格式下拉列表中选择框。

虽然我有很多.NET经验,但我没有为MS Office做过多少开发。在高层次上,我应该看一下使用.NET将另一个另存为格式添加到Word 2007中吗?

3 个答案:

答案 0 :(得分:3)

在Word 2007中,您基本上有两个选项可以添加自己的自定义文件导出过滤器:

答案 1 :(得分:2)

查看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交互的外部程序中。对于替换内置的“另存为”对话框,您还需要在某处处理Microsoft.Office.Interop.Word.Application.DocumentBeforeSave事件(VBA,使用此代码等)来拦截默认行为。

以下是“另存为”处理程序的示例:

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

答案 2 :(得分:0)

无法保存为自定义格式或通过对象模型更改SaveAs对话框。现在,这看起来是http://msdn.microsoft.com/en-us/library/aa338206.aspx

的唯一方式