Tässä artikkelissa kerrotaan, miten VBA: ta käytetään kohteiden kopioimiseen leikepöydälle.
Saattaa olla aika, että haluamme kopioida tiedot Excel VBA: han ja tallentaa ne käytettäväksi toisessa sovelluksessa tai muulla hetkellä, kun Excel -makro on lakannut toimimasta. Kun makro lakkaa toimimasta, muuttujaan tai muuttujiin tallennetut tiedot lakkaavat olemasta, eikä niitä voi enää hakea. Yksi tapa ratkaista tämä ongelma on kopioida nämä tiedot leikepöydälle.
Kopioiminen leikepöydälle HTML -objektikirjaston avulla
Yksinkertaisin tapa käyttää leikepöytää Excel VBA: ssa on soittaa HTML -objektikirjastoon.
1234567 | Sub StoreData ()Dim varText VaihtoehtonaDim objCP objektinavarText = "Jotakin kopioitua tekstiä"Aseta objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "teksti", varTextEnd Sub |
Koska käytämme myöhäistä sidontaa ilmoittamalla muuttujan objCP objektiksi, meidän ei tarvitse lisätä viittausta Exceliin, jotta tämä menettely toimisi.
Jos nyt siirrymme Excel -laskentataulukkoomme ja napsautamme Liitä, teksti "Jotkut kopioidut tiedot" lisätään valittuun soluun.
Jos muuttaisimme yllä olevan menettelyn funktioksi, voisimme siirtää kopioitavan tekstin muuttujana.
12345 | Toiminto StoreData (varText As Variant) merkkijononaDim objCP objektinaAseta objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "teksti", varTextLopeta toiminto |
Voisimme sitten kutsua tätä toimintoa useita kertoja VBA -koodissamme, kun ja kun meidän on kopioitava teksti leikepöydälle. Tekstiä ei siksi koodattaisi VBA-koodiin.
123 | Sub CopyData ()StoreData "Jotakin kopioitua tekstiä"End Sub |
Voimme myös käyttää HTML -objektia tekstin palauttamiseen leikepöydältä - eli liittämiseen. Käytämme tätä varten GetDataa SetData -menetelmän sijaan.
12345 | Toiminto ReturnData ()Dim objCP objektinaAseta objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("teksti")Lopeta toiminto |
Voimme sitten kutsua tätä toimintoa palauttaaksesi leikepöydälle tallennetut tiedot.
123 | Sub PasteData ()MsgBox ReturnDataEnd Sub |
Näppärä temppu olisi kahden toiminnon yhdistäminen niin, että voisimme käyttää samaa toimintoa tietojen kopioimiseen ja liittämiseen sen mukaan, lähetämmekö tietoja leikepöydälle vai emme, tai jos haluamme hakea tietoja leikepöydältä.
1234567891011 | Toiminto StoreOrReturnData (valinnainen strText merkkijonona) merkkijononaDim varText VaihtoehtonaDim objCP objektinaAseta objCP = CreateObject ("HtmlFile")varText = strTextJos strText "" SittenobjCP.ParentWindow.ClipboardData.SetData "teksti", varTextMuuStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("teksti")Loppu JosLopeta toiminto |
Yllä olevassa koodissa voimme tehdä strText -muuttujasta valinnaisen - tämä tarkoittaa, että jos haluamme kopioida tietoja, sisällytämme kopioitavan tekstin, mutta jos haluamme liittää tiedot, suljemme sen pois.
Määritämme sitten merkkijonomuuttujan (strText) muuttujamuuttujalle, jotta se voidaan tallentaa HTML -tiedostoobjektin SetData -menetelmään.
Voit kopioida tiedot käyttämällä tätä menettelyä. Huomaa, että sisällytämme kopioitavan tekstin.
123 | Sub CopyData ()StoreOrReturnData "SomeCopiedText"End Sub |
Voit liittää tiedot käyttämällä tätä menettelyä. Viestiruudussa näkyy leikepöydälle tallennettu arvo.
123 | Sub PasteData ()MsgBox Store tai Palauta tiedotEnd Sub |