VBA GetObject | Kā izmantot funkciju GetObject programmā Excel VBA?

Excel VBA GETOBJECT funkcija

Mēs varam izmantot funkciju GetObject VBA MS Excel, lai piekļūtu ActiveX objektam no Excel faila un pēc tam piešķirtu objektu objekta mainīgajam. Lai izmantotu OLE (Object Linking and Embedding) vai COM (Compound Object Module) tehnoloģiju, lai kontrolētu jebkuru Microsoft lietojumprogrammu, piemēram, MS Word, MS Outlook, MS PowerPoint un Internet Explorer, utt., Mēs varam izmantot funkciju VBA GETOBJECT.

Mēs izmantojam funkciju CreateObject, lai izveidotu objektu, un funkcija GETOBJECT atgriež atsauci uz objektu.

Funkcijas GETOBJECT sintakse

Funkcijai GET OBJECT ir šādi nosauktie argumenti:

  1. Ceļa nosaukums: Mums jānorāda pilns ceļš un faila nosaukums, kurā ir izgūstamais objekts. Šis ir neobligāts arguments, faktiski abi GetObject funkcijas argumenti nav obligāti, bet, ja “ceļa nosaukums” tiek izlaists, ir nepieciešams otrais arguments “class”.
  2. Klase : Šis ir arī izvēles arguments, kā norādīts arī iepriekš. Tas pieņem virkni, kas attēlo objekta klasi.

Mēs izmantojam sintaksi 'appname.objecttype', lai norādītu argumentu 'class'.

  1. Lietotnes nosaukums: Mums jānorāda lietojumprogrammas nosaukums, kas nodrošinās objektu.
  2. Objecttype: mēs norādām izveidojamā objekta klases tipu.

Funkcijas Excel VBA GETOBJECT piemērs

Šo VBA GetObject veidni varat lejupielādēt šeit - VBA GetObject veidne

Pieņemsim, ka mums ir Word dokuments, kurā ir 3 tabulas.

Mēs vēlamies uzrakstīt VBA kodu, kas visas dokumentā esošās tabulas importēs Excel lapā. Lai to izdarītu, mums VBA būs jāizmanto funkcija CreateObject un GetObject.

Soļi būtu:

  • Izveidojiet Excel failu un saglabājiet failu ar .xlsm excel paplašinājumu (darbgrāmata Excel Macro-Enabled), jo mums būs jāpalaiž VBA kods (makro).
  • Atveriet vizuālo pamata redaktoru ar īsinājumtaustiņu (Alt + F11) vai Excel programmā cilnes “Izstrādātājs” grupā “Kods” izmantojot komandu “Visual Basic”.
  • Veiciet dubultklikšķi uz “ThisWorkbook” VBA redaktora kreisajā pusē un ekrāna augšdaļā redzamajā sarakstā izvēlieties “Workbook”.

  • Sarakstā izvēlieties 'Atvērt'.

  • Tagad mums jāieraksta kods starp šīm divām rindām.

  • Pirmkārt, mēs paziņosim mainīgos, kas satur objektus (MS Word dokuments un MS Word lietojumprogrammas objekts), un “String Variable”, kas satur dokumenta nosaukumu no vietas, kur mums jāizvelk tabulas.

  • Kļūdu apstrādei mēs pievienosim vienu paziņojumu, šis paziņojums liek VBA programmai ignorēt kļūdu un atsākt izpildi ar nākamo koda rindu. Izraksts “On Error Resume Next” nenovērš izpildlaika kļūdas, bet tas vienkārši nozīmē, ka programmas izpilde turpināsies no rindas, kas seko tai līnijai, kura izraisīja kļūdu.

  • Tagad mēs izmantosim funkciju GetObject, lai piekļūtu pašreizējam Word lietojumprogrammas objekta gadījumam.

  • Ja gadījumā nav pašreizējās MS Word lietojumprogrammas vai ActiveX komponents nevar izveidot objektu vai atgriezt atsauci uz šo objektu, tad kļūda 429. Lai to izdarītu, kodā pievienosim zemāk divas rindiņas. Pēc kļūdas apstrādes mums jāizveido MS Word lietojumprogrammas objekta eksemplārs, izmantojot funkciju CreateObject .

  • Lai padarītu MS Word lietojumprogrammu redzamu, mēs mainīsim objekta 'WdApp' redzamo rekvizītu uz TRUE .

  • Mums jāatrod Word dokumenta atrašanās vieta un faila nosaukums, no kura mēs vēlamies tabulas importēt Excel lapā, un tas pats jāpiešķir “strDocName”. Lai atrastu nosaukumu un atrašanās vietu, mēs varam pārbaudīt faila rekvizītus .

Lai atvērtu dialoglodziņu Rekvizīti , vienkārši atlasiet failu un nospiediet taustiņu kombināciju Alt + Enter .

  • Ja fails nepastāv norādītajā vietā, kods atgriež ziņojumu ar norādi “Faila marķējuma informācija mapes ceļā netika atrasta”. Nosaukums būtu “Atvainojiet, šī dokumenta nosaukums nepastāv”.

  • Tagad mums jāaktivizē MS Word lietojumprogramma un jāpiešķir mainīgais “wddoc” ar vārdu dokumentu, kura faila nosaukums ir saglabāts “strDocName” .

  • Ja fails jau nav atvērts, mums jāatver dokuments un jāaktivizē lietotne.

  • Pēc vārda dokumenta aktivizēšanas mums ir jāpiekļūst dokumenta tabulām. Lai to izdarītu, mēs izveidosim dažus mainīgos.

Tabula ir vesels skaitlis mainīgais, kas dokumentā saglabās tabulu skaitu.

rowWd ir garš mainīgais, kas konkrētajā tabulā saglabās rindu skaitu.

colWd ir garš mainīgais, kas glabā kolonnu skaitu konkrētā tabulā.

  • Mums jāuzskaita tabulas tabula dokumentā, un, ja dokumentā nav tabulas, mēs parādīsim lietotājam ziņojumu lodziņu, ka “Word dokumentā nav tabulu” .

  • Lai piekļūtu dokumenta tabulām un lai ierakstītu saturu Excel lapā, mēs darbosim “Par” VBA cilpu vairākas tabulas reizes, un šajā VBA lokā mēs palaidīsim ligzdotas “for” cilpas, lai piekļūtu katrai rindai un katrā kolonnā rindā.

  • Tā kā mēs nevēlamies saglabāt dokumentu un aizvērt programmu. Mums vajadzētu arī atbrīvot sistēmas atmiņu. Lai to izdarītu, mēs uzrakstīsim šādu kodu.

Tagad, kad mēs atvērsim Excel failu, aizpildīšana tiek atjaunināta ar tabulas saturu no Word dokumenta.

Kods:

Private Sub Workbook_Open () Rem Deklarējot objekta mainīgos, lai piekļūtu objektam, kuru izveidojis GETOBJECT Dim WdApp kā objekts, wddoc kā Object Rem Deklarējot virknes mainīgo, lai piekļūtu Word dokumentam. Dim strDocName kā virkne Rem Kļūdas apstrādes kļūda Atsākt Nākamo Rem aktivizēt MS Word, ja tas jau ir atvērts Iestatiet WdApp = GetObject (, "Word.Application") Ja Err.Number = 429 Tad Err.Clear Rem Word lietojumprogrammas objekta izveide, ja MS Word vēl nav atvērta. Set WdApp = CreateObject ("Word.Application") Beigt Ja WdApp.Visible = True strDocName = "C: \ Users \ CBA7_01 \ Desktop \ Marks Details.docx" Rem Pārbaudīt attiecīgā dokumenta atbilstošo direktoriju Rem Ja tas nav atrasts, informējiet lietotāju un aizveriet programmu If Dir (strDocName) = " "Tad MsgBox" Fails "& strDocName & vbCrLf &"netika atrasts mapes ceļā "& vbCrLf &" C: \ Users \ CBA7_01 \. ", _vbExclamation," Atvainojiet, šī dokumenta nosaukuma nav. "Iziet no apakšgala, ja WdApp.Activate Set wddoc = WdApp.Documents (strDocName ) Ja wddoc nav nekā, tad iestatiet wddoc = WdApp.Documents.Open ("C: \ Users \ CBA7_01 \ Desktop \ Marks Details.docx") wddoc.Activate Rem Definējot mainīgos, lai piekļūtu tabulām vārda dokumentā Dim Tble As Integer Dim 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 Tad MsgBox "Word tabulā nav tabulu", vbExclamation, "No Importēšanas tabulas "Exit Sub End If Rem Sākot cilpu procesu, lai piekļūtu tabulām un to rindām, kolonnas Par i = 1 Lai tabulētu ar .Tables (i) Par rowWd = 1 To .Rows.Count Par colWd = 1 To .Columns.Count Cells (x, y) = WorksheetFunction.Clean (.cell (rowWd, colWd) .Range.Text) Rem Piekļuve nākamajai kolonnai y = y + 1 Next colWd Rem Pāriet uz nākamo rindu un sāciet no 1. kolonnas y = 1 x = x + 1 Nākamā rinda Wd beigas ar nākamo beigas ar Rem mums nav jāsaglabā vārds dokuments wddoc. Aizveriet Savechanges: = False Rem mēs aizvērām MS Word lietojumprogrammu WdApp.Quit Rem = Nothing Set WdApp = Nothing End SubBeigt Rem Mēs beidzot atbrīvojam sistēmas atmiņu, kas piešķirta 2 objektu mainīgajiem. Set wddoc = Nothing Set WdApp = Nothing End SubBeigt Rem Mēs beidzot atbrīvojam sistēmas atmiņu, kas piešķirta 2 objektu mainīgajiem. Set wddoc = Nothing Set WdApp = Nothing End Sub

Atceramās lietas

  1. Ir daži vienas instances objekti, kuriem tiek ģenerēts tikai viens objekta gadījums, neatkarīgi no skaitļa, kuram tiek palaists CreateObject. Funkcija GetObject vienmēr atgriež to pašu gadījumu, kad to izsauc ar nulles garuma virkni, un rodas kļūda, ja arguments “pathname” nav minēts.
  2. Mēs nevaram izmantot GetObject, lai piekļūtu atsaucei uz klasi, kas izveidota, izmantojot VBA.
  3. Ja gadījumā nav aktīvas MS Word lietojumprogrammas vai mēs nevēlamies, lai objekts tiktu sākts ar jau ielādētu failu, vispirms objekta izveidošanai izmantojam funkciju CreateObject un pēc tam objektam piekļuvei izmantojam funkciju GetObject.

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