Share via


Limitazioni a livello di codice degli elementi e dei controlli host

Aggiornamento: Luglio 2008

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Progetti a livello di documento

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Progetti a livello di applicazione

  • Excel 2007

  • Word 2007

Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazione.

Ciascun elemento host e controllo host viene progettato per comportarsi come un oggetto nativo corrispondente di Microsoft Office Word o Microsoft Office Excel, con funzionalità aggiuntive. Tuttavia, esistono alcune differenze fondamentali tra il comportamento degli elementi host e dei controlli host e gli oggetti nativi di Office in fase di esecuzione.

Per informazioni generali sugli elementi host e sui controlli host, vedere Cenni preliminari sugli elementi e sui controlli host.

Creazione a livello di codice di elementi host

Quando si crea o si apre a livello di codice un documento, una cartella di lavoro o un foglio di lavoro in fase di esecuzione, l'elemento non è di tipo host. Al contrario, si tratta di un nuovo oggetto nativo di Office. Ad esempio, se si utilizza il metodo Add per creare un nuovo documento di Word in fase di esecuzione, si tratterà di un oggetto Microsoft.Office.Interop.Word.Document nativo piuttosto che di un elemento host Microsoft.Office.Tools.Word.Document. Analogamente, quando si crea un nuovo foglio di lavoro in fase di esecuzione utilizzando il metodo Add, si ottiene un oggetto Microsoft.Office.Interop.Excel.Worksheet nativo piuttosto che un elemento host Microsoft.Office.Tools.Excel.Worksheet.

Nei progetti a livello di documento, non è possibile creare elementi host in fase di esecuzione. Gli elementi host possono essere creati solo in fase di progettazione nei progetti a livello di documento. Per ulteriori informazioni, vedere Elemento host documento, Elemento host cartella di lavoro e Elemento host foglio di lavoro.

A partire da Visual Studio 2008 Service Pack 1 (SP1), è possibile creare gli elementi host Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbook o Microsoft.Office.Tools.Excel.Worksheet in fase di esecuzione nei componenti aggiuntivi a livello di applicazione per Excel 2007 e Word 2007. Per ulteriori informazioni, vedere Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione.

Creazione a livello di codice di controlli host

È possibile aggiungere a livello di codice controlli host a un elemento host Microsoft.Office.Tools.Word.Document o Microsoft.Office.Tools.Excel.Worksheet in fase di esecuzione. Per ulteriori informazioni, vedere la classe Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Non è possibile aggiungere controlli host a un oggetto Microsoft.Office.Interop.Word.Document o Microsoft.Office.Interop.Excel.Worksheet nativo.

Nota:

I controlli host seguenti non possono essere aggiunti a livello di codice a fogli di lavoro o documenti: XmlMappedRange, XMLNode e XMLNodes.

Informazioni sulle differenze di tipo tra elementi host, controlli host e oggetti nativi di Office

Per ciascun elemento host e controllo host esiste un oggetto nativo di Microsoft Office Word o Microsoft Office Excel sottostante. È possibile accedere all'oggetto sottostante utilizzando la proprietà InnerObject dell'elemento host o del controllo host. Non esiste tuttavia alcun modo per eseguire il cast di un oggetto nativo di Office nel corrispondente elemento host o controllo host. Se si tenta di eseguire il cast di un oggetto nativo di Office nel tipo di un elemento host o di un controllo host, verrà generata un'eccezione InvalidCastException.

Esistono diversi scenari in cui le differenze tra i tipi di elementi host e controlli host e gli oggetti nativi di Office sottostanti possono influire sul codice.

Passaggio di controlli host a metodi e proprietà

In Word non è possibile passare un controllo host a un metodo o a una proprietà che richiede un oggetto Word nativo come parametro. È necessario utilizzare la proprietà InnerObject del controllo host per restituire l'oggetto Word nativo sottostante. Ad esempio, è possibile passare un oggetto Microsoft.Office.Interop.Word.Bookmark a un metodo passando la proprietà InnerObject del controllo host Microsoft.Office.Tools.Word.Bookmark al metodo.

In Excel esistono due casi in cui è necessario utilizzare la proprietà InnerObject del controllo host:

  • Quando il metodo o la proprietà prevede l'oggetto Excel sottostante.

  • Quando l'attributo ExcelLocale1033Attribute viene impostato su false e il metodo o la proprietà prevede un oggetto Object invece dell'oggetto Excel sottostante.

Nell'esempio riportato di seguito un controllo Microsoft.Office.Tools.Excel.NamedRange viene creato e passato al metodo AutoFill. Il codice utilizza la proprietà InnerObject dell'intervallo denominato per restituire l'oggetto Microsoft.Office.Interop.Excel.Range di Office sottostante richiesto dal metodo AutoFill.

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

Tipi restituiti delle proprietà e dei metodi nativi di Office

La maggior parte dei metodi e delle proprietà degli elementi host restituisce l'oggetto nativo di Office sottostante sul quale si basa l'elemento host. Ad esempio, la proprietà Parent di un controllo host NamedRange in Excel restituisce un oggetto Microsoft.Office.Interop.Excel.Worksheet piuttosto che un elemento host Microsoft.Office.Tools.Excel.Worksheet. Analogamente, la proprietà Parent di un controllo host RichTextContentControl in Word restituisce un oggetto Microsoft.Office.Interop.Word.Document piuttosto che un elemento host Microsoft.Office.Tools.Word.Document.

Accesso agli insiemi di controlli host

Visual Studio Tools per Office non fornisce insiemi specifici per ogni tipo di controllo host. Non è possibile, ad esempio, enumerare ciascun controllo Microsoft.Office.Tools.Word.Bookmark nel documento utilizzando l'insieme Microsoft.Office.Interop.Word.Bookmarks. Nell'insieme Microsoft.Office.Interop.Word.Bookmarks sono inclusi tutti i segnalibri del documento; non viene fatta distinzione tra un controllo Microsoft.Office.Tools.Word.Bookmark e un oggetto Microsoft.Office.Interop.Word.Bookmark.

È possibile utilizzare le proprietà Worksheet.Controls o Document.Controls per scorrere tutti i controlli (sia i controlli host, sia quelli Windows Form) del documento o del foglio di lavoro e quindi ricercare gli elementi che corrispondono al tipo del controllo host al quale si è interessati. Nell'esempio di codice seguente viene esaminato ogni controllo in un documento di Word e stabilito se il controllo è un oggetto 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.
    }
}

Vedere anche

Concetti

Cenni preliminari sugli elementi e sui controlli host

Elemento host foglio di lavoro

Elemento host cartella di lavoro

Elemento host documento

Riferimenti

Worksheet.Controls

Document.Controls

Altre risorse

Controlli host di Word

Controlli host di Excel

Cronologia delle modifiche

Date

History

Motivo

Luglio 2008

Aggiunte informazioni sulla creazione di elementi host tramite i componenti aggiuntivi a livello di applicazione.

Modifica di funzionalità in SP1.