image

Come suggerisce il nome, la funzione CreateObject viene utilizzata per creare oggetti. Ma perché utilizziamo il metodo o la funzione CreateObject se possiamo creare direttamente un oggetto utilizzando la nuova parola chiave? Bene, questa è una domanda valida e abbiamo una risposta adeguata. La creazione di un oggetto utilizzando CreateObject è chiamata Late Binding *. Alla fine del binding, la creazione di oggetti avviene in fase di esecuzione. Non è necessario aggiungere alcun riferimento. Ciò rende il codice VBA portatile.

Ad esempio, se crei un’applicazione che si occupa di altre applicazioni e utilizzi l’associazione anticipata aggiungendo riferimenti e utilizzando la parola chiave new *. Successivamente trasferisci quel codice su un’altra macchina, quindi dovrai aggiungere i riferimenti anche su quella macchina.

Ma se hai utilizzato il metodo CreateObject per creare altri oggetti dell’applicazione, non avrai bisogno di aggiungere i riferimenti su altre macchine, nel caso in cui trasferisci o condividi il codice.

In questo articolo impareremo a conoscere il metodo CreateObject utilizzando alcuni esempi.

Sintassi della funzione CreateObject:

Set object_name= CreateObject(classname as string,[servername])

classname come stringa: è una variabile richiesta. È una stringa che fa riferimento al nome dell’applicazione e al tipo di oggetto. Il nome dell’applicazione e la classe dell’oggetto da creare devono essere dichiarati in AppName.ObjecType. Ad esempio, se voglio un oggetto di Word Application, scriverei “Word.Application”. Lo vedremo in dettaglio negli esempi più avanti.

[servername]: è una variabile opzionale. È una stringa del nome del server di rete in cui verrà creato l’oggetto. Se servername è una stringa vuota (“”), viene utilizzata la macchina locale. Non lo useremo in questo capitolo.

Ora che conosciamo le basi della funzione CreateObject usiamole in alcuni esempi:

Esempio 1: aprire l’applicazione Microsoft Word utilizzando Excel VBA Quindi, se volessimo utilizzare l’associazione anticipata, aggiungeremmo riferimenti alle applicazioni word utilizzando il menu Strumenti → Riferimenti.

image

E il nostro codice sarebbe simile a questo.

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

Il vantaggio di questo codice, è che ottieni l’assistenza dell’intelligenza di VBA e ti mostra il metodo e le proprietà disponibili dell’oggetto che hai creato. Funzionerà perfettamente con il tuo sistema. Tuttavia, se condividi questo codice con qualcun altro e non hanno aggiunto il riferimento alla libreria di Microsoft Word dagli strumenti, riceveranno un errore.

image

Per evitare questo errore, utilizzare il codice seguente.

Sub OpenWordApp()

Dim wordApp As Object



Set wordApp = CreateObject("Word.Application")



Dim wordDoc As Object

wordApp.Visible = True

Set wordDoc = wordApp.Documents.Add

End Sub

Il codice sopra funzionerà perfettamente su qualsiasi macchina. È portatile poiché stiamo eseguendo l’associazione tardiva utilizzando il metodo CreateObject per creare l’oggetto.

Vediamo un altro esempio:

Esempio 2: creazione di un oggetto cartella di lavoro utilizzando la funzione CreateObject Se si lavora con VBA per un certo periodo di tempo, è necessario aver creato o aggiunto cartelle di lavoro utilizzando la parola chiave New. In questo esempio, lo faremo utilizzando CreateObject.

Sub addSheet()



' Declare an object variable to hold the object

' reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

' Make Excel visible through the Application object.

ExcelSheet.Application.Visible = True

' Place some text in the first cell of the sheet.

ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"

' Save the sheet to C:\test.xls directory.

ExcelSheet.SaveAs "C:\TEST.XLS"

' Close Excel with the Quit method on the Application object.

ExcelSheet.Application.Quit

' Release the object variable.

Set ExcelSheet = Nothing

End Sub

Quindi sì ragazzi, è così che usi il metodo CreateObject in VBA. Parliamo dei vantaggi e dei difetti di esso.

Vantaggi di CreateObject per creare Object Il vantaggio principale di CreateObject è che rende il tuo codice portabile (quando la creazione dell’oggetto è il problema). Puoi condividere il codice con chiunque senza preoccuparti se ha aggiunto il riferimento al programma oggetto usando o meno.

Difetto di CreateObject

Le carenze del metodo CreateObject sono:

Devi conoscere la struttura della classe che utilizzerai per la creazione degli oggetti.

Una volta creato l’oggetto, sei totalmente dipendente dalla tua memoria per i metodi e le proprietà degli oggetti, poiché VBA non fornisce alcun senso intellettuale per aiutarti.

Possiamo superare le carenze di cui sopra. Ho un trucco.

Ogni volta che scrivo codice che verrà condiviso con altri, utilizzo il primo metodo per creare oggetti (Aggiunta di riferimenti da strumenti). Questo mi aiuta a scrivere il codice più velocemente. Dopo aver finito il programma VBA e averlo testato, sostituisco il metodo New con il metodo CreateObject. Questo rende il codice portabile. Puoi usare questo trucco.

Quindi sì ragazzi, è così che puoi usare la funzione CreateObject per creare oggetti in VBA. Spero di essere stato in grado di spiegare tutto. Se hai domande riguardanti questo articolo o altre domande relative a VBA, chiedimi nella sezione commenti qui sotto.

Articoli correlati:

link: / applications-word-outlook-in-vba-get-started-with-excel-vba-userforms [Primi passi con Excel VBA UserForms] | * Spiegherò come creare un modulo in Excel, come usarlo Toolbox VBA, come gestire gli input dell’utente e infine come memorizzare gli input dell’utente. Affronteremo questi argomenti utilizzando un esempio e una guida passo passo.

link: / general-topics-in-vba-vba-variables-in-excel [Variabili VBA in Excel] | * VBA sta per Visual Basic for Applications.

È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni Microsoft Office come MSExcel, MS-Word e MS-Access mentre le variabili VBA sono parole chiave specifiche.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * In tutti i linguaggi di programmazione, abbiamo specificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha specificatori di ambito.

link: / celle-intervalli-righe-e-colonne-in-vba-qual-è-la-differenza-tra-byref-e-byval-argomenti-vba-interview-question [Argomenti ByRef e ByVal] | Quando un argomento viene passato come argomento ByRef a una funzione secondaria o diversa, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell’argomento originale.

link: / files-cartella-di-lavoro-e-fogli di lavoro-in-vba-cancella-fogli-senza-richieste-di-conferma-usando-vba-in-microsoft-excel [Elimina fogli senza richieste di conferma usando VBA in Microsoft Excel] | Dato che stai eliminando fogli usando VBA, sai cosa stai facendo.

Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016 | In questo codice abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi l’abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc. Visualizza un messaggio su La barra di stato di Excel VBA * | La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l’aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Turn Off Warning Messages Using VBA In Microsoft Excel 2016] | * Questo codice non solo disabilita VBA avvisa ma aumenta anche l’efficienza temporale del codice. Vediamo come.

Articoli popolari:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività] | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel] | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Contare i valori con le condizioni utilizzando questa straordinaria funzione. Non è necessario filtrare i dati per contare valori specifici.

La funzione Countif è essenziale per preparare la tua dashboard.

link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel] | Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.