VBA „GetObject“ Kaip naudoti „GetObject“ funkciją „Excel VBA“?

„Excel VBA GETOBJECT“ funkcija

Mes galime naudoti „GetObject“ funkciją VBA „MS Excel“, kad galėtume pasiekti „ActiveX“ objektą iš „Excel“ failo ir paskui priskirti objektą objekto kintamajam. Norėdami naudoti OLE (objektų susiejimas ir įdėjimas) arba COM (sudėtinis objektų modulis) technologijas valdyti bet kurią „Microsoft“ programą, pvz., „MS Word“, „MS Outlook“, „MS PowerPoint“, „Internet Explorer“ ir kt., Galime naudoti funkciją VBA GETOBJECT.

Objektui sukurti naudojame funkciją CreateObject, o funkcija GETOBJECT grąžina nuorodą į objektą.

Funkcijos GETOBJECT sintaksė

Funkcijoje GET OBJECT yra šie įvardyti argumentai:

  1. Kelio pavadinimas: turime nurodyti visą failo, kuriame yra objektas, kurį norite gauti, kelią ir pavadinimą. Tai yra neprivalomas argumentas, iš tikrųjų abu funkcijos „GetObject“ argumentai yra neprivalomi, tačiau jei „kelio pavadinimas“ praleidžiamas, būtinas antrasis argumentas „klasė“.
  2. Klasė : Tai taip pat neprivalomas argumentas, kaip nurodyta anksčiau. Tai priima eilutę, nurodančią objekto klasę.

Norėdami nurodyti argumentą „klasė“, naudojame sintaksę „appname.objecttype“.

  1. Programos pavadinimas: Turime nurodyti programos pavadinimą, kuris pateiks objektą.
  2. Objecttype: Nurodome kuriamo objekto klasės tipą.

„Excel VBA GETOBJECT“ funkcijos pavyzdys

Šį „VBA GetObject“ šabloną galite atsisiųsti čia - „VBA GetObject“ šablonas

Tarkime, mes turime žodinį dokumentą, kuriame yra 3 lentelės.

Norime parašyti VBA kodą, kuris visas dokumento lenteles importuos į „Excel“ lapą. Norėdami tai padaryti, VBA turėsime naudoti „CreateObject“ ir „GetObject“ funkcijas.

Žingsniai būtų:

  • Sukurkite „Excel“ failą ir išsaugokite failą su .xlsm excel plėtiniu („Excel Macro-Enabled Workbook“), nes mums reikės paleisti VBA kodą (makrokomandą).
  • Atidarykite „Visual Basic“ redaktorių naudodami spartųjį klavišą („Alt“ + F11) arba naudodami „Visual Basic“ komandą „Excel“ skirtuko „Kūrėjas“ grupėje „Kodas“.
  • Dukart spustelėkite „ThisWorkbook“ kairėje VBA redaktoriaus pusėje ir ekrano viršuje pateiktame sąraše pasirinkite „Workbook“.

  • Iš sąrašo pasirinkite „Atidaryti“.

  • Dabar turime parašyti kodą tarp šių dviejų eilučių.

  • Pirma, mes paskelbsime kintamuosius objektams laikyti („MS Word“ dokumentas ir „MS Word Application“ objektas) ir „Styginių kintamąjį“, kad laikytume dokumento pavadinimą, iš kur turime išgauti lenteles.

  • Norėdami tvarkyti klaidas, pridėsime vieną teiginį, šis sakinys liepia VBA programai nepaisyti klaidos ir atnaujinti vykdymą kitoje kodo eilutėje. „On Error Resume Next“ teiginys nepašalina vykdymo laiko klaidų, bet tai tiesiog reiškia, kad programos vykdymas bus tęsiamas nuo eilutės, einančios po eilutės, kuri sukėlė klaidą.

  • Dabar naudosime funkciją „GetObject“, kad gautume prieigą prie dabartinio „Word Application Object“ egzemplioriaus.

  • Jei šiuo atveju nėra nė vieno „MS Word Application“ egzemplioriaus, arba „ActiveX“ komponentas negali sukurti objekto arba grąžinti nuorodos į šį objektą, tada klaida 429. Tam mes pridėsime žemiau dvi eilutes kode. Ištaisę klaidą, naudodami „ CreateObject“ funkciją , turime sukurti „MS Word Application“ objekto egzempliorių .

  • Kad „MS Word Application“ būtų matoma, mes pakeisime matomą „WdApp“ objekto ypatybę į TRUE .

  • Turime rasti žodžio dokumento, iš kurio norime importuoti lenteles, vietą ir failo pavadinimą į „Excel“ lapą ir priskirti tą patį „strDocName“. Norėdami rasti vardą ir vietą, galime patikrinti failo ypatybes .

Norėdami atidaryti dialogo langą „Ypatybės“ , tiesiog pasirinkite failą ir paspauskite „Alt + Enter“ .

  • Jei failas neegzistuoja nurodytoje vietoje, kodas pateikia pranešimą „Failo žymos informacija nerasta aplanko kelyje“. Pavadinimas būtų „Deja, to dokumento pavadinimo nėra“.

  • Dabar turime suaktyvinti „MS Word“ programą ir priskirti kintamąjį „wddoc“ su žodiniu dokumentu, kurio failo pavadinimas saugomas „strDocName“ .

  • Jei failas dar neatidarytas, turime atidaryti dokumentą ir suaktyvinti programą.

  • Suaktyvinę žodį dokumentas, turime pasiekti dokumento lenteles. Norėdami tai padaryti, sukursime keletą kintamųjų.

Lentelė yra sveikasis skaičius kintamasis, kuris išsaugos lentelių skaičių dokumente.

„rowWd“ yra ilgasis kintamasis, kuris išsaugos eilučių skaičių konkrečioje lentelėje.

colWd yra ilgasis kintamasis, kuriame bus saugomas tam tikros lentelės stulpelių skaičius.

  • Turime suskaičiuoti lentelę dokumente ir jei dokumente nėra lentelės, vartotojui parodysime pranešimo laukelį „Nėra lentelių rasta„ Word “dokumente“ .

  • Norėdami pasiekti dokumente esančias lenteles ir parašyti turinį „Excel“ lape, vykdysime „Už“ VBA kilpą keletą lentelių kartų, o šioje VBA kilpoje vykdysime įdėtas „for“ kilpas, kad galėtume pasiekti kiekvieną eilutę ir kiekvienas eilutės stulpelis.

  • Kadangi mes nenorime išsaugoti dokumento ir uždaryti programos. Taip pat turėtume atlaisvinti sistemos atmintį. Norėdami tai padaryti, parašysime šį kodą.

Dabar, kai atidarysime „Excel“ failą, užpildymas atnaujinamas lentelės turiniu iš „Word“ dokumento.

Kodas:

Privatus antrinis darbaknygė_Open () Rem Deklaruojant objekto kintamuosius, norint pasiekti objektą, sukurtą GETOBJECT Dim WdApp kaip objektą, wddoc kaip Object Rem Deklaruojant eilutės kintamąjį, norint pasiekti „Word“ dokumentą. Dim strDocName kaip String Rem jau atidarytas Nustatykite WdApp = GetObject (, "Word.Application") Jei Err.Number = 429 Tada Err.Clear Rem Sukurkite Word programos objektą, jei MS Word dar nėra atidarytas. Nustatykite WdApp = CreateObject ("Word.Application") Pabaiga Jei WdApp.Visible = True strDocName = "C: \ Users \ CBA7_01 \ Desktop \ Marks Details.docx" Pašalinti Patikrinkite atitinkamą atitinkamo dokumento katalogą Rem Jei nerasta, informuokite vartotoją ir uždarykite programą If Dir (strDocName) = " "Tada MsgBox" Failas "& strDocName & vbCrLf &"nerastas aplanko kelyje "& vbCrLf &" C: \ Users \ CBA7_01 \. ", _vbExclamation," Deja, to dokumento pavadinimo nėra. "Išeikite iš antrinės pabaigos, jei WdApp.Activate Set wddoc = WdApp.Documents (strDocName ) Jei „wddoc“ nėra nieko, tada nustatykite rowWd As Long Dim colWd As Integer Dim x As Long, y As long x = 1 y = 1 With wddoc Tble = wddoc.Tables.Count If Tble = 0 Tada MsgBox "Nerasta lentelių Word dokumente", vbExclamation, "Ne Lentelės, skirtos importuoti „Exit Sub End If Rem“ Pradedant ciklo procesą, norint pasiekti lenteles ir jų eilutes, stulpeliai, skirti i = 1 lentelėms. Lentelės (i) eilutėmsWd = 1 iki .Rows.Count Už colWd = 1 į .Columns.Count Cells (x, y) = WorksheetFunction.Clean (.cell (rowWd, colWd) .Range.Text) Rem Prieiga prie kito stulpelio y = y + 1 Next colWd Rem Einant į kitą eilutę ir pradedant nuo 1 stulpelio y = 1 x = x + 1 Kita eilutė Wd pabaiga su kita pabaiga su Rem mums nereikia įrašyti žodžio dokumento wddoc. Uždaryti savechanges: = False Rem mes uždarėme MS Word programą WdApp.Quit Rem Pagaliau atleidžiame sistemos atmintį, skirtą 2 objektų kintamiesiems Set wddoc = Nieko nenustatyta WdApp = Nieko pabaigos antrinisBaigti Rem Mes pagaliau atlaisviname sistemos atmintį, skirtą 2 objektų kintamiesiems. Nustatykite wddoc = Nieko nenustatykite„Quit Rem“ Galiausiai atleidžiame sistemos atmintį, skirtą 2 objektų kintamiesiems. Set wddoc = Nothing Set WdApp = Nothing End Sub

Ką reikia atsiminti

  1. Yra koks nors vieno egzemplioriaus objektas, kuriam sukuriamas tik vienas objekto egzempliorius, neatsižvelgiant į skaičių, kuriam paleista „CreateObject“. Funkcija „GetObject“ visada grąžina tą patį egzempliorių, kai jis iškviečiamas su nulio ilgio eilute, ir atsiranda klaida, jei neminima argumento „kelio pavadinimas“.
  2. Negalime naudoti „GetObject“ norėdami pasiekti nuorodą į klasę, sukurtą naudojant VBA.
  3. Jei tokiu atveju nėra aktyvaus „MS Word“ programos egzemplioriaus arba mes nenorime, kad objektas būtų inicijuotas jau įkeltu failu, tada pirmiausia naudome funkciją „CreateObject“, kad sukurtume objektą, o tada naudodamiesi funkcija „GetObject“ norėdami pasiekti objektą.

$config[zx-auto] not found$config[zx-overlay] not found