主項目和主控制項的程式設計限制

每個主項目和主控制項的行為,都已設計成像是對應的原生 Microsoft Office Word 或 Microsoft Office Excel 物件一樣,同時還具備額外的功能。不過,主項目及主控制項與原生的 Office 物件之間在執行階段行為上還是有一些基本差異。

如需主項目和主控制項的一般資訊,請參閱主項目和主控制項概觀

**適用於:**本主題中的資訊適用於下列應用程式的文件層級專案和應用程式層級專案:Excel 2013 和 Excel 2010、Word 2013 和 Word 2010。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

以程式設計方式建立主項目

當您使用 Word 或 Excel 物件模型以程式設計的方式在執行階段建立或開啟文件、活頁簿或工作表時,此項目並不是主項目。相反地,這個新物件其實是原生的 Office 物件。例如,如果您在執行階段使用 Documents.Add 方法建立新的 Word 文件,這個文件將會是原生 Microsoft.Office.Interop.Word.Document 物件,而非 Microsoft.Office.Tools.Word.Document 主項目。同樣地,當您在執行階段使用 Worksheets.Add 方法建立新工作表時,您會得到原生 Microsoft.Office.Interop.Excel.Worksheet 物件,而非 Microsoft.Office.Tools.Excel.Worksheet 主項目。

在文件層級專案中,您無法在執行階段建立主項目。主項目只能在設計階段建立於文件層級專案中。如需詳細資訊,請參閱Document 主項目Workbook 主項目Worksheet 主項目

在應用程式層級專案中,您可以在執行階段建立 Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.WorkbookMicrosoft.Office.Tools.Excel.Worksheet 主項目。如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

以程式設計方式建立主控制項

您可以以程式設計的方式,在執行階段將主控制項加入至 Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.Worksheet 主項目。如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

您無法將主控制項加入至原生 Microsoft.Office.Interop.Word.DocumentMicrosoft.Office.Interop.Excel.Worksheet

注意事項注意事項

下列主控制項無法以程式設計的方式加入至工作表或文件:XmlMappedRangeXMLNodeXMLNodes

了解主項目、主控制項和原生 Office 物件之間的型別差異

在每個主項目和主控制項中,都有基礎的原生 Microsoft Office Word 或 Microsoft Office Excel 物件。您可以使用主項目或主控制項的 InnerObject 屬性來存取基礎物件。不過,卻無法將原生 Office 物件轉型為其對應的主項目或主控制項。如果嘗試將原生 Office 物件轉換為主項目或主控制項的型別,將會擲回 InvalidCastException

在許多情況下,主項目和主控制項與基礎原生 Office 物件之間的型別差異會影響程式碼。

ms178779.collapse_all(zh-tw,VS.110).gif傳遞主控制項至方法和屬性

在 Word 中,您不能將主控制項傳遞至需要原生 Word 物件做為參數的方法或屬性 (Property)。您必須使用主控制項的 InnerObject 屬性 (Property) 傳回基礎原生 Word 物件。例如,您可以藉由將 Microsoft.Office.Tools.Word.Bookmark 主控制項的 InnerObject 屬性 (Property) 傳遞至方法,將 Microsoft.Office.Interop.Word.Bookmark 物件傳遞至方法。

在 Excel 中,,在方法或屬性需要基礎 Excel 物件時,您必須使用主控制項的 InnerObject 屬性將主控制項傳遞至方法或屬性。

下列範例會建立 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"].Value2 = "Monday";
this.Range["A2"].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);

ms178779.collapse_all(zh-tw,VS.110).gif傳回原生 Office 方法和屬性的型別。

主項目的大部分方法和屬性,都會傳回主項目所依據的基礎原生 Office 物件。例如,Excel 中 NamedRange 主控制項的Parent 屬性會傳回 Microsoft.Office.Interop.Excel.Worksheet 物件,而不是傳回 Microsoft.Office.Tools.Excel.Worksheet 主項目。同樣地,Word 中 RichTextContentControl 主控制項的 Parent 屬性會傳回 Microsoft.Office.Interop.Word.Document 物件,而不是傳回 Microsoft.Office.Tools.Word.Document 主項目。

ms178779.collapse_all(zh-tw,VS.110).gif存取主控制項的集合

Visual Studio Tools for Office Runtime 不會為每種型別的主控制項提供個別集合。請改用主項目的 Controls 屬性在文件或工作表上逐一查看所有 Managed 控制項 (主控制項和 Windows Form 控制項),然後尋找與您想要使用的主控制項型別相符的項目。下列程式碼範例會檢查 Word 文件中的每個控制項,並判斷控制項是否為 Microsoft.Office.Tools.Word.Bookmark

Dim targetControl As Object
For Each targetControl In Me.Controls

    If TypeOf (targetControl) Is Microsoft.Office.Tools.Word.Bookmark Then
        Dim bookMark As Microsoft.Office.Tools.Word.Bookmark = _
            CType(targetControl, Microsoft.Office.Tools.Word.Bookmark)

        ' Do some work with the book mark here.
    End If
Next
foreach (object targetControl in this.Controls)
{
    Microsoft.Office.Tools.Word.Bookmark bookMark =
        targetControl as Microsoft.Office.Tools.Word.Bookmark;

    if (bookMark != null)
    {
        // Do some work with the bookmark here.
    }
}

如需主項目之 Controls 屬性的詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

Word 和 Excel 物件模型包括在文件和工作表上公開原生控制項集合的屬性。您無法使用這些屬性存取 Managed 控制項。例如,您無法使用 Microsoft.Office.Interop.Word.DocumentBookmarks 屬性或 Microsoft.Office.Tools.Word.DocumentBookmarks 屬性列舉文件中的每一個 Microsoft.Office.Tools.Word.Bookmark 主控制項。這些屬性只包括文件中的 Microsoft.Office.Interop.Word.Bookmark 控制項,而不包括文件中的 Microsoft.Office.Tools.Word.Bookmark 主控制項。

請參閱

參考

Worksheet.Controls

Document.Controls

概念

主項目和主控制項概觀

使用擴充物件自動化 Word

使用擴充物件自動化 Excel

Worksheet 主項目

Workbook 主項目

Document 主項目