Freigeben über


Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekte auf Dokumentebene

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Projekte auf Anwendungsebene

  • Excel 2007

  • Word 2007

Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Jedes Hostelement und jedes Hoststeuerelement ist dafür konzipiert, sich wie ein entsprechendes systemeigenes Microsoft Office Word- oder Microsoft Office Excel-Objekt mit zusätzlichen Funktionen zu verhalten. Es gibt jedoch einige grundlegende Unterschiede zwischen dem Verhalten von Hostelementen bzw. Hoststeuerelementen und systemeigenen Office-Objekten zur Laufzeit.

Allgemeine Informationen über Hostelemente und Hoststeuerelemente finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

Programmgesteuertes Erstellen von Hostelementen

Wenn Sie ein Dokument, eine Arbeitsmappe oder ein Arbeitsblatt zur Laufzeit programmgesteuert erstellen oder öffnen, ist das Element kein Hostelement. Das neue Objekt ist ein systemeigenes Office-Objekt. Wenn Sie beispielsweise die Add-Methode verwenden, um ein neues Word-Dokument zur Laufzeit zu erstellen, ist dieses ein systemeigenes Microsoft.Office.Interop.Word.Document-Objekt anstelle eines Microsoft.Office.Tools.Word.Document-Hostelements. Entsprechend erhalten Sie, wenn Sie mit der Add-Methode ein neues Arbeitsblatt zur Laufzeit erstellen, ein systemeigenes Microsoft.Office.Interop.Excel.Worksheet-Objekt anstelle eines Microsoft.Office.Tools.Excel.Worksheet-Hostelements.

In Projekten auf Dokumentebene können Sie zur Laufzeit keine Hostelemente erstellen. Hostelemente können in Projekten auf Dokumentebene nur zur Entwurfszeit erstellt werden. Weitere Informationen finden Sie unter Dokumenthostelement, Arbeitsmappenhostelement und Arbeitsblatthostelement.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie die Hostelemente Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbook und Microsoft.Office.Tools.Excel.Worksheet in Add-Ins auf Anwendungsebene für Excel 2007 und Word 2007 zur Laufzeit erstellen. Weitere Informationen finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.

Programmgesteuertes Erstellen von Hoststeuerelementen

Sie können Hoststeuerelemente einem Microsoft.Office.Tools.Word.Document-Hostelement oder einem Microsoft.Office.Tools.Excel.Worksheet-Hostelement zur Laufzeit programmgesteuert hinzufügen. Weitere Informationen hierzu finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.

Sie können einem systemeigenen Microsoft.Office.Interop.Word.Document oder Microsoft.Office.Interop.Excel.Worksheet keine Hoststeuerelemente hinzufügen.

Hinweis:

Arbeitsblättern oder Dokumenten können die folgenden Hoststeuerelemente nicht programmgesteuert hinzugefügt werden: XmlMappedRange, XMLNode und XMLNodes.

Grundlagen zu Typunterschieden zwischen Hostelementen, Hoststeuerelementen und systemeigenen Office-Objekten

Jedem Hostelement und Hoststeuerelement liegt ein systemeigenes Microsoft Office Word- oder Microsoft Office Excel-Objekt zugrunde. Sie können auf das zugrunde liegende Objekt zugreifen, indem Sie die InnerObject-Eigenschaft des Hostelements oder Hoststeuerelements verwenden. Es gibt jedoch keine Möglichkeit, ein systemeigenes Office-Objekt in das entsprechende Hostelement oder Hoststeuerelement umzuwandeln. Wenn Sie versuchen, ein systemeigenes Office-Objekt in ein Hostelement oder Hoststeuerelement umzuwandeln, wird eine InvalidCastException ausgelöst.

In einigen Szenarien können die Typunterschiede zwischen Hostelementen bzw. Hoststeuerelementen und den zugrundeliegenden systemeigenen Office-Objekten Auswirkungen auf Ihren Code haben.

Übergeben von Hoststeuerelementen an Methoden und Eigenschaften

Sie können in Word kein Hoststeuerelement an eine Methode oder Eigenschaft übergeben, für die ein systemeigenes Word-Objekt als Parameter erforderlich ist. Verwenden Sie die InnerObject-Eigenschaft des Hoststeuerelements für die Rückgabe des zugrunde liegenden, systemeigenen Word-Objekts. Sie können z. B. ein Microsoft.Office.Interop.Word.Bookmark-Objekt an eine Methode übergeben, indem Sie die InnerObject-Eigenschaft des Microsoft.Office.Tools.Word.Bookmark-Hoststeuerelements an die Methode übergeben.

In Excel gibt es zwei Situationen, in denen Sie die InnerObject-Eigenschaft des Hoststeuerelements verwenden müssen:

  • Wenn die Methode oder Eigenschaft das zugrunde liegende Excel-Objekt erwartet.

  • Wenn das ExcelLocale1033Attribute-Attribut auf false festgelegt ist und die Methode ein Object anstelle des zugrunde liegenden Excel-Objekts erwartet.

Im folgenden Beispiel wird ein Microsoft.Office.Tools.Excel.NamedRange-Steuerelement erstellt und an die AutoFill-Methode übergeben. Der Code gibt mit der InnerObject-Eigenschaft des benannten Bereichs den zugrunde liegenden Office-Microsoft.Office.Interop.Excel.Range zurück, der von der AutoFill-Methode gefordert wird.

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);

Rückgabetypen von systemeigenen Office-Methoden und -Eigenschaften

Die meisten Methoden und Eigenschaften von Hostelementen geben das zugrunde liegende systemeigene Office-Objekt zurück, auf dem das Hostelement basiert. Die Parent-Eigenschaft eines NamedRange-Hoststeuerelements in Excel gibt beispielsweise ein Microsoft.Office.Interop.Excel.Worksheet-Objekt anstelle eines Microsoft.Office.Tools.Excel.Worksheet-Hostelements zurück. In ähnlicher Weise gibt die Parent-Eigenschaft eines RichTextContentControl-Hoststeuerelements in Word ein Microsoft.Office.Interop.Word.Document-Objekt anstelle eines Microsoft.Office.Tools.Word.Document-Hostelements zurück.

Zugreifen auf Auflistungen von Hoststeuerelementen

Visual Studio Tools for Office stellt keine getrennten Auflistungen für die einzelnen Typen von Hoststeuerelementen zur Verfügung. Es ist zum Beispiel nicht möglich, unter Verwendung der Microsoft.Office.Interop.Word.Bookmarks-Auflistung die einzelnen Microsoft.Office.Tools.Word.Bookmark-Steuerelemente des Dokuments aufzulisten. Die Microsoft.Office.Interop.Word.Bookmarks-Aufzählung enthält alle Lesezeichen des Dokuments. Zwischen einem Microsoft.Office.Tools.Word.Bookmark-Steuerelement und einem Microsoft.Office.Interop.Word.Bookmark wird nicht unterschieden.

Mit der Worksheet.Controls-Eigenschaft oder der Document.Controls-Eigenschaft können Sie alle Steuerelemente in dem Dokument oder dem Arbeitsblatt (sowohl Hoststeuerelemente als auch Windows Forms-Steuerelemente) durchlaufen und dann nach Elementen suchen, die dem gewünschten Hoststeuerelement entsprechen. In den folgenden Codebeispielen wird jedes Steuerelement eines Word-Dokuments untersucht. Dabei wird ermittelt, ob es sich um ein Microsoft.Office.Tools.Word.Bookmark handelt.

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.
    }
}

Siehe auch

Konzepte

Übersicht über Hostelemente und Hoststeuerelemente

Arbeitsblatthostelement

Arbeitsmappenhostelement

Dokumenthostelement

Referenz

Worksheet.Controls

Document.Controls

Weitere Ressourcen

Word-Hoststeuerelemente

Excel-Hoststeuerelemente

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Informationen über das Erstellen von Hostelementen mit Add-Ins auf Anwendungsebene hinzugefügt.

SP1-Featureänderung.