Questo articolo dimostrerà come utilizzare VBA per copiare elementi negli Appunti.
Potrebbe esserci un momento in cui desideriamo copiare le informazioni in Excel VBA e archiviarle per utilizzarle all'interno di un'altra applicazione o in un altro momento in cui la macro di Excel ha smesso di funzionare. Quando una macro interrompe l'esecuzione, le informazioni memorizzate in una o più variabili smettono di esistere e non possono più essere recuperate. Un modo per risolvere questo problema sarebbe copiare queste informazioni negli appunti.
Copia negli Appunti utilizzando la libreria di oggetti HTML
Il modo più semplice per utilizzare gli appunti in Excel VBA è chiamare la libreria di oggetti HTML.
1234567 | Sub StoreData()Dim varText come varianteDim objCP As ObjectvarText = "Alcuni testi copiati"Imposta objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "testo", varTextFine sottotitolo |
Poiché utilizziamo l'associazione tardiva dichiarando la variabile objCP come oggetto, non è necessario aggiungere un riferimento a Excel per far funzionare questa procedura.
Se ora dovessimo passare al nostro foglio di lavoro Excel e fare clic su Incolla, il testo "Alcuni dati copiati" verrebbe inserito nella cella selezionata.
Se dovessimo cambiare questa procedura sopra in una funzione, potremmo passare il testo da copiare come variabile.
12345 | Funzione StoreData(varText As Variant) as StringDim objCP As ObjectImposta objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "testo", varTextFine funzione |
Potremmo quindi chiamare questa funzione più volte nel nostro codice VBA come e quando abbiamo bisogno di copiare il testo negli appunti. Il testo non verrebbe quindi codificato nel codice VBA.
123 | Sotto CopyData()StoreData "Testo copiato"Fine sottotitolo |
Possiamo anche usare l'Oggetto HTML per restituire il testo dagli appunti - cioè Incollare. Per questo utilizziamo il metodo GetData anziché il metodo SetData.
12345 | Funzione ReturnData()Dim objCP As ObjectImposta objCP = CreateObject("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData("testo")Fine funzione |
Possiamo quindi chiamare questa funzione per restituire i dati memorizzati negli appunti.
123 | Sub PasteData()MsgBox ReturnDataFine sottotitolo |
Un bel trucco sarebbe combinare le 2 funzioni insieme in modo da poter utilizzare la stessa funzione per copiare e incollare i dati, a seconda che inviamo o meno i dati negli appunti o se desideriamo recuperare i dati dagli appunti.
1234567891011 | Funzione StoreOrReturnData(StrText opzionale As String) As StringDim varText come varianteDim objCP As ObjectImposta objCP = CreateObject("HtmlFile")varText = strTextSe strText "" AlloraobjCP.ParentWindow.ClipboardData.SetData "testo", varTextAltroStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("testo")Finisci seFine funzione |
Nel codice sopra, possiamo rendere facoltativa la variabile strText - questo significa che se desideriamo Copiare i dati, includeremo il testo da copiare, ma se desideriamo Incollare i dati, lo escluderemo.
Assegneremo quindi la variabile stringa (strText) a una variabile Variant in modo che venga archiviata nel metodo SetData dell'oggetto file HTML.
Per copiare i dati, possiamo utilizzare questa procedura, nota che stiamo includendo il testo da copiare.
123 | Sotto CopyData()StoreOrReturnData "SomeCopiedText"Fine sottotitolo |
Per incollare i dati, possiamo utilizzare questa procedura. La finestra di messaggio mostrerà il valore memorizzato negli appunti.
123 | Sub PasteData()MsgBox StoreOrReturnDataFine sottotitolo |