
了解主項目、主控制項和原生 Office 物件之間的型別差異
在每個主項目和主控制項中,都有基礎的原生 Microsoft Office Word 或 Microsoft Office Excel 物件。您可以使用主項目或主控制項的 InnerObject 屬性來存取基礎物件。不過,卻無法將原生 Office 物件轉型為其對應的主項目或主控制項。如果嘗試將原生 Office 物件轉換為主項目或主控制項的型別,將會擲回 InvalidCastException。
在許多情況下,主項目和主控制項與基礎原生 Office 物件之間的型別差異會影響程式碼。
傳遞主控制項至方法和屬性
在 Word 中,您不能將主控制項傳遞至需要原生 Word 物件做為參數的方法或屬性 (Property)。您必須使用主控制項的 InnerObject 屬性 (Property) 傳回基礎原生 Word 物件。例如,您可以藉由將 Microsoft.Office.Tools.Word..::.Bookmark 主控制項的 InnerObject 屬性 (Property) 傳遞至方法,將 Microsoft.Office.Interop.Word..::.Bookmark 物件傳遞至方法。
在 Excel 中,有兩種情況必須使用主控制項的 InnerObject 屬性 (Property):
下列範例會建立 Microsoft.Office.Tools.Excel..::.NamedRange 控制項,並將其傳遞至 AutoFill 方法。此程式碼會使用已命名範圍的 InnerObject 屬性,傳回 AutoFill 方法所需的基礎 Office Microsoft.Office.Interop.Excel..::.Range。
Me.Range("A1").Value2 = "Monday"
Me.Range("A2").Value2 = "Tuesday"
Dim dayRange As Microsoft.Office.Tools.Excel.NamedRange = _
Me.Controls.AddNamedRange(Me.Range("A1", "A7"), "dayRange")
Me.Range("A1", "A2").AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays)
this.Range["A1", missing].Value2 = "Monday";
this.Range["A2", missing].Value2 = "Tuesday";
Microsoft.Office.Tools.Excel.NamedRange dayRange
= this.Controls.AddNamedRange(this.Range["A1", "A7"], "dayRange");
this.Range["A1", "A2"].AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays);
傳回原生 Office 方法和屬性的型別。
存取主控制項的集合