了解 Office 方案中的選擇性參數
更新:2007 年 11 月
Microsoft Office 應用程式的物件模型中有許多方法接受選擇性 (Optional) 參數。 只有在您使用 Visual Basic 呼叫方法時,選擇性參數才是選擇性的。當您使用 C# 對 Microsoft Offic 應用程式進行程式設計時,必須為所有參數傳遞值。
Visual Basic 和 Visual C# 中的選擇性參數差異
如果您使用 Visual Basic 對 Microsoft Office 應用程式進行程式設計,則不需為選擇性參數傳遞值,因為預設值會自動用於每個遺漏的參數。但是,C# 不支援選擇性參數,所以您必須針對方法的每個參數各傳遞一個值。
Visual Studio Tools for Office 專案包含一個名為 missing 的全域變數,這個變數在產生的程式碼中會被指派成值 Type.Missing。您可以傳遞這個全域變數,在每個接受參考型別 (Reference Type) (例如 Object) 的選擇性參數都採用預設值。至於接受實值型別 (Value Type) 的選擇性參數,則必須傳遞實際預設值。如需詳細資訊,請參閱在 Visual C# 中傳遞實值型別至選擇性參數。
Excel 中的範例
Worksheet.CheckSpelling 方法會採用下列接受參考型別的選擇性參數:
CustomDictionary:指出在主字典中找不到文字時是否使用自訂字典。
IgnoreUppercase:指出是否忽略大寫。
AlwaysSuggest:指出找到不正確拼字時是否要 Excel 顯示建議的替代拼字清單。
SpellLang:指出使用中的字典語言。
您可以接受這些參數的預設值,如下列程式碼範例所示。
Globals.Sheet1.CheckSpelling()
Globals.Sheet1.CheckSpelling(missing, missing, missing, missing);
Word 中的範例
一般而言,從 C# 呼叫 Microsoft Office Word 方法比呼叫其他 Office 應用程式的方法更複雜,因為您必須以傳址 (By Reference) 方式傳遞所有選擇性參數。
例如,Document.CheckSpelling 方法會採用下列選擇性參數,進行 Word 文件的拼字檢查:
CustomDictionary:自訂字典的檔名。
IgnoreUppercase:指出是否忽略大寫。
AlwaysSuggest:指出找到不正確拼字時是否要 Word 顯示建議的替代拼字清單。
CustomDictionary2 – CustomDictionary10:其他自訂字典的檔名,您最多可以指定 9 個其他的字典。
您可以接受這些參數的預設值,如下列程式碼範例所示。
Me.CheckSpelling()
this.CheckSpelling(
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
在 Visual C# 中傳遞實值型別至選擇性參數
在 Visual C# 中,您只能對接受參考型別的選擇性參數,傳遞全域 missing 變數。至於接受實值型別的選擇性參數,則必須決定實際的預設值,並且傳遞該值。
例如,NamedRange 類別的 Sort 方法接受大量列舉值做為參數,例如 Microsoft.Office.Interop.Excel.XlSortOrder。由於這是實值型別,因此您必須指定其中一個 XlSortOrder 值,而不是傳遞全域 missing 變數。
如需實值和參考型別參數的詳細資訊,請參閱以傳值和傳址方式傳遞引數 (適用於 Visual Basic) 和傳遞參數 (C# 程式設計手冊)。