主項目和主控制項的程式設計限制
更新: 2008 年 7 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 文件層級專案
應用程式層級專案
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
每個主項目和主控制項的行為,都已設計成像是對應的原生 Microsoft Office Word 或 Microsoft Office Excel 物件一樣,同時還具備額外的功能。不過,主項目及主控制項與原生的 Office 物件之間在執行階段行為上還是有一些基本差異。
如需主項目和主控制項的一般資訊,請參閱主項目和主控制項概觀。
以程式設計方式建立主項目
當您以程式設計的方式在執行階段建立或開啟文件、活頁簿或工作表,此項目並不是主項目。相反地,這個新物件其實是原生的 Office 物件。例如,如果您在執行階段使用 Add 方法建立新的 Word 文件,這個文件將會是原生 Microsoft.Office.Interop.Word.Document 物件,而非 Microsoft.Office.Tools.Word.Document 主項目。同樣地,當您在執行階段使用 Add 方法建立新工作表時,您會得到原生 Microsoft.Office.Interop.Excel.Worksheet 物件,而非 Microsoft.Office.Tools.Excel.Worksheet 主項目。
在文件層級專案中,您無法在執行階段建立主項目。主項目只能在設計階段建立於文件層級專案中。如需詳細資訊,請參閱 Document 主項目、Workbook 主項目 和 Worksheet 主項目。
從 Visual Studio 2008 Service Pack 1 (SP1) 開始,您可以透過 Excel 2007 和 Word 2007 的應用程式層級增益集,於執行階段建立 Microsoft.Office.Tools.Word.Document、Microsoft.Office.Tools.Excel.Workbook 或 Microsoft.Office.Tools.Excel.Worksheet 主項目。如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿。
以程式設計方式建立主控制項
您可以以程式設計的方式,在執行階段將主控制項加入至 Microsoft.Office.Tools.Word.Document 或 Microsoft.Office.Tools.Excel.Worksheet 主項目。如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件。
您無法將主控制項加入至原生 Microsoft.Office.Interop.Word.Document 或 Microsoft.Office.Interop.Excel.Worksheet。
注意事項: |
---|
下列主控制項無法以程式設計的方式加入至工作表或文件:XmlMappedRange、XMLNode 和 XMLNodes。 |
了解主項目、主控制項和原生 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):
當方法或屬性 (Property) 需要基礎 Excel 物件時。
當 ExcelLocale1033Attribute 屬性 (Attribute) 設定為 false,而且方法或屬性需要 Object 而非基礎 Excel 物件時。
下列範例會建立 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 方法和屬性的型別。
主項目的大部分方法和屬性,都會傳回主項目所依據的基礎原生 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 主項目。
存取主控制項的集合
Visual Studio Tools for Office 不會為每種型別的主控制項提供個別集合。例如,無法使用 Microsoft.Office.Interop.Word.Bookmarks 集合,來列舉文件中的每個 Microsoft.Office.Tools.Word.Bookmark 控制項。Microsoft.Office.Interop.Word.Bookmarks 集合包含文件中的所有書籤;它並不會區別 Microsoft.Office.Tools.Word.Bookmark 控制項和 Microsoft.Office.Interop.Word.Bookmark。
您可以使用 Worksheet.Controls 或 Document.Controls 屬性,逐一查看文件或工作表上的所有控制項 (主控制項和 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 book mark here.
}
}
請參閱
概念
參考
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2008 年 7 月 |
加入有關使用應用程式層級增益集建立主項目的資訊。 |
SP1 功能變更。 |