Office 解决方案中的可选参数

Microsoft Office 应用程序的对象模型中的许多方法都接受可选参数。如果使用 Visual Basic 在 Visual Studio 2012 中开发 Office 解决方案,您不必为可选参数传递值,因为系统会为每个缺少的参数自动使用默认值。在许多情况下,也可以省略在 visual C# 项目的可选参数。但是,不能省略 ThisDocument 选件类的选项 ref 参数在文档级 Word 项目中

**适用于:**本主题中的信息适用于 Office 2013 和 Office 2010 的文档级项目和应用程序级项目。请参见按 Office 应用程序和项目类型提供的功能

有关在 Visual C# 和 Visual Basic 项目中使用可选参数的更多信息,请参见命名实参和可选实参(C# 编程指南)可选参数 (Visual Basic)

说明说明

在 Visual Studio 的早期版本中,您必须为 Visual C# 项目中的每个可选参数传递一个值。为了方便起见,这些项目包括一个名为 missing 的全局变量,当您需要使用某个可选参数的默认值时,您可以将该变量传递到该可选参数。Visual Studio 2012 中面向 Office 的 Visual C# 项目仍然包括 missing 变量,但在 Visual Studio 2012 中开发 Office 解决方案时,通常不需要使用该变量,除非在面向 Word 的文档级项目中使用 ThisDocument 类的可选 ref 参数调用方法时,才需要使用该变量。

Excel 中的示例

Worksheet.CheckSpelling 方法具有多个可选参数。您可以为某些参数指定值,并接受其他参数的默认值,如下面的代码示例所示。此示例需要一个带有名为 Sheet1 的工作表类的文档级项目。

Globals.Sheet1.CheckSpelling(ignoreUppercase:=True)

Globals.Sheet1.CheckSpelling(ignoreUppercase: true);

Word 中的示例

Find.Execute 方法具有多个可选参数。您可以为某些参数指定值,并接受其他参数的默认值,如下面的代码示例所示。

With Me.Application.ActiveDocument.Content
    .Find.ClearFormatting()
    .Find.Execute(FindText:="blue", ReplaceWith:="red", Replace:=Word.WdReplace.wdReplaceAll)
End With
Word.Range documentRange = this.Application.ActiveDocument.Content;
documentRange.Find.ClearFormatting();
documentRange.Find.Execute(FindText: "blue", ReplaceWith: "red", Replace: Word.WdReplace.wdReplaceAll);            

在面向 Word 的 Visual C# 文档级项目中使用 ThisDocument 类中方法的可选参数

Word 对象模型包含许多具有可选 ref 参数的方法,这些方法接受 Object 值。但是,在面向 Word 的 Visual C# 文档级项目中,不能省略已生成 ThisDocument 类的方法的可选 ref 参数。Visual C# 使您能够仅为接口(而不是类)的方法省略可选的 ref 参数。例如,下面的代码示例无法进行编译,因为不能省略 ThisDocument 类的 CheckSpelling 方法的可选 ref 参数。

Globals.ThisDocument.CheckSpelling(ignoreUppercase: true);

当您调用 ThisDocument 类的方法时,请遵循下列准则:

  • 若要接受可选 ref 参数的默认值,请将 missing 变量传递到该参数。将在 Visual C# Office 项目中自动定义 missing 变量,并指派给生成的项目代码中的值 Type.Missing

  • 若要为可选 ref 参数指定您自己的值,请声明一个指派给所需指定的值的对象,然后将该对象传递到参数。

下面的代码示例演示如何通过为 ignoreUppercase 参数指定值并接受其他参数的默认值,来调用 CheckSpelling 方法。

object ignoreUppercase = true;
Globals.ThisDocument.CheckSpelling(
    ref missing, ref ignoreUppercase, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

如果要编写在 ThisDocument 类中省略方法的可选 ref 参数的代码,您也可以选择对 InnerObject 属性返回的 Microsoft.Office.Interop.Word.Document 对象调用同一方法,并省略该方法中的参数。您可以这样做,因为 Microsoft.Office.Interop.Word.Document 是接口而不是类。

Globals.ThisDocument.InnerObject.CheckSpelling(IgnoreUppercase: true);

有关值类型和引用类型参数的更多信息,请参见通过值和通过引用传递参数 (Visual Basic)(适用于 Visual Basic)和传递参数(C# 编程指南)

请参见

概念

在 Office 解决方案中编写代码

其他资源

开发 Office 解决方案