VBA GetObject | Paano gamitin ang GetObject Function sa Excel VBA?

Pag-andar ng Excel VBA GETOBJECT

Maaari naming gamitin ang pagpapaandar ng GetObject sa VBA sa MS Excel upang ma-access ang isang bagay na ActiveX mula sa excel file at pagkatapos ay italaga ang object sa isang variable ng object. Upang magamit ang OLE (Object Linking and Embedding) o COM (Compound Object Module) na teknolohiya upang makontrol ang anumang aplikasyon ng Microsoft tulad ng MS Word, MS Outlook, MS PowerPoint, at Internet Explorer, atbp., Maaari naming gamitin ang pagpapaandar ng VBA GETOBJECT.

Gumagamit kami ng pag-andar ng CreateObject upang likhain ang bagay at ibabalik ng pagpapaandar ng GETOBJECT ang sanggunian sa bagay.

Syntax para sa GETOBJECT Function

Ang GET OBJECT Function ay may mga pinangalanang mga argumento:

  1. Pathname: Kailangan naming tukuyin ang buong landas at ang pangalan ng file na naglalaman ng object upang makuha. Ito ay isang opsyonal na argument, sa katunayan, kapwa ang mga argumento sa pagpapaandar ng GetObject ay opsyonal ngunit kung ang 'pathname' ay tinanggal, kinakailangan ang pangalawang argumentong 'klase'.
  2. Klase: Ito rin ay isang opsyonal na argument tulad ng tinukoy nang mas maaga din. Tumatanggap ito ng isang string na kumakatawan sa klase ng bagay.

Ginagamit namin ang syntax na 'appname.objecttype' upang tukuyin ang argumento ng 'klase'.

  1. Appname: Kailangan naming tukuyin ang pangalan ng application, na magbibigay ng object.
  2. Objecttype: Tinutukoy namin ang uri ng klase ng bagay na lilikha.

Halimbawa ng Pag-andar ng Excel VBA GETOBJECT

Maaari mong i-download ang VBA GetObject Template dito - VBA GetObject Template

Ipagpalagay, mayroon kaming isang salitang dokumento na naglalaman ng 3 mga talahanayan.

Nais naming magsulat ng isang VBA code na mai-import ang lahat ng mga talahanayan sa dokumento sa excel sheet. Upang gawin ang pareho, kakailanganin naming gamitin ang function ng CreateObject at GetObject sa VBA.

Ang mga hakbang ay:

  • Lumikha ng isang excel file at i-save ang file gamit ang .xlsm excel extension (Excel Macro-Enified Workbook) dahil kakailanganin naming patakbuhin ang VBA code (isang macro).
  • Buksan ang visual basic editor na may isang shortcut key (Alt + F11) o paggamit ng 'Visual Basic' na utos sa pangkat na 'Code' sa tab na 'Developer' sa excel.
  • Mag-double click sa 'ThisWorkbook' sa kaliwang bahagi ng editor ng VBA at piliin ang 'Workbook' mula sa listahan na ipinakita pagkatapos sa tuktok ng screen.

  • Piliin ang 'Buksan' mula sa listahan.

  • Ngayon kailangan naming isulat ang code sa pagitan ng dalawang linya na ito.

  • Una, idedeklara namin ang mga variable upang hawakan ang mga object (MS Word Document at MS Word Application object) at isang 'String Variable' upang hawakan ang pangalan ng dokumento mula sa kung saan kailangan naming kunin ang mga talahanayan.

  • Para sa paghawak ng error, magdaragdag kami ng isang pahayag, sinasabi ng pahayag na ito sa programa ng VBA na huwag pansinin ang error at ipagpatuloy ang pagpapatupad sa susunod na linya ng code. Ang pahayag na "On Error Resume Next" ay hindi inaayos ang mga error sa runtime ngunit nangangahulugan lamang ito na ang pagpapatupad ng programa ay magpapatuloy mula sa linya na sumusunod sa linya na naging sanhi ng error.

  • Ngayon ay gagamitin namin Pag-andar ng GetObject upang makakuha ng access sa kasalukuyang halimbawa ng Word Application Object.

  • Kung sakali, walang kasalukuyang halimbawa ng MS Word Application o ActiveX na bahagi ay hindi maaaring lumikha ng isang bagay o bumalik na sanggunian sa object na ito pagkatapos ay error 429. Para sa mga ito, magdagdag kami sa ibaba ng dalawang mga linya sa code. Matapos hawakan ang error, kailangan naming lumikha ng isang halimbawa ng object ng MS Word Application gamit ang Pag-andar ng CreateObject.

  • Upang makita ang Application ng MS Word, babaguhin namin ang nakikitang pag-aari ng 'WdApp' tututol sa TOTOO.

  • Kailangan naming hanapin ang lokasyon at pangalan ng file ng salitang dokumento mula sa kung saan nais naming i-import ang mga talahanayan sa isang excel sheet at italaga ang pareho sa "StrDocName" Upang hanapin ang pangalan at lokasyon, maaari naming suriin ang ari-arian ng file.

Upang buksan ang 'Ari-arian' dialog box, piliin lamang ang file at pindutin ang 'Alt + Enter'.

  • Kung ang file ay hindi umiiral sa tinukoy na lokasyon pagkatapos ay ibabalik ng code ang mensahe na nagsasaad ng "Ang mga Detalye ng Marka ng file ay hindi natagpuan sa folder path". Ang pamagat ay "Paumanhin, ang pangalan ng dokumento ay wala."

  • Ngayon kailangan naming buhayin ang Application ng MS Word at italaga ang variable 'Wddoc' kasama ang salitang dokumento na mayroong pangalan ng file na nakaimbak sa 'StrDocName'.

  • Kung ang file ay hindi nabuksan pagkatapos ay kailangan naming buksan ang dokumento at buhayin ang app.

  • Matapos buhayin ang salitang dokumento, kailangan naming i-access ang mga talahanayan sa dokumento. Upang gawin ang pareho, lilikha kami ng ilang mga variable.

Tble ay ang variable na integer, na mag-iimbak ng bilang ng mga talahanayan sa dokumento.

rowWd ay ang mahabang variable, na mag-iimbak ng bilang ng mga hilera sa isang partikular na talahanayan.

colWd ay ang mahabang variable, na mag-iimbak ng bilang ng mga haligi sa isang partikular na talahanayan.

  • Kailangan nating bilangin ang bilang ng mga talahanayan sa dokumento at kung walang talahanayan sa dokumento pagkatapos ay magpapakita kami ng isang kahon ng mensahe sa gumagamit na "Walang nahanap na mga Talahanayan sa dokumento ng Word".

  • Upang ma-access ang mga talahanayan sa dokumento at isulat ang nilalaman sa excel sheet, magpapatakbo kami ng isang 'Para sa' VBA loop para sa isang bilang ng mga oras ng talahanayan at sa loob ng loop ng VBA na ito, tatakbo kami sa pugad 'para sa' mga loop para sa pag-access sa bawat hilera at bawat haligi sa hilera.

  • Dahil hindi namin nais na i-save ang dokumento at umalis sa application. Dapat din nating palabasin ang memorya ng system. Upang gawin ang pareho, isusulat namin ang sumusunod na code.

Ngayon tuwing bubuksan namin ang excel file, ang punan ay na-update sa nilalaman ng talahanayan mula sa salitang dokumento.

Code:

 Pribadong Sub Workbook_Open () Rem Pagdeklara ng mga variable ng Bagay upang ma-access ang bagay na nilikha ng GETOBJECT Dim WdApp Bilang Bagay, wddoc Bilang Object Rem Pagdeklara ng isang variable ng string upang ma-access ang Word document Dim strDocName Bilang String Rem Error sa paghawak sa Error Resume Susunod Rem Paganahin ang MS Word kung ito ay binuksan na ang Itakda ang WdApp = GetObject (, "Word.Application") Kung Err.Number = 429 Pagkatapos Err.Clear Rem Lumilikha ng isang object ng application ng Word kung ang MS Word ay hindi pa binubuksan Itakda ang WdApp = LumikhaObject ("Word.Application") Wakas Kung WdApp.Visible = True strDocName = "C: \ Users \ CBA7_01 \ Desktop \ Marks Details.docx" Rem Sinusuri ang nauugnay na direktoryo para sa nauugnay na dokumento Rem Kung hindi natagpuan pagkatapos ay ipapaalam sa gumagamit at isara ang programa Kung Dir (strDocName) = " "Pagkatapos MsgBox" Ang file "& strDocName & vbCrLf &" ay hindi natagpuan sa folder path "& vbCrLf &" C: \ Users \ CBA7_01 \. ", _VbExclaim," Paumanhin, walang pangalan ang dokumento na iyon. " Exit Sub End Kung WdApp.Activate Set wddoc = WdApp.Documents (strDocName) Kung ang wddoc Ay Wala Pagkatapos Itakda ang wddoc = WdApp.Documents.Open ("C: \ Users \ CBA7_01 \ Desktop \ Marks Details.docx") wddoc. Aktibahin ang Rem Ang pagtukoy ng mga variable upang ma-access ang mga talahanayan ng dokumento ng salita na Dim Tble Bilang Integer Dim rowWd Bilang Long Dim colWd Bilang Integer Dim x As Long, y As Long x = 1 y = 1 Sa wddoc Tble = wddoc. Mga Kabuuan. Bilang Kung Tble = 0 Pagkatapos MsgBox "Walang Nahanap na Mga Talahanayan sa dokumento ng Word", vbExclaim, "Walang Mga Lamesa upang Mag-import" Exit Sub End Kung Rem Simula ang proseso ng pag-loop upang ma-access ang mga talahanayan at kanilang mga hilera, mga haligi Para sa i = 1 To Tble With. = 1 To .Rows.Count For colWd = 1 To .Columns.Count Cells (x, y) = WorksheetFunction.Clean (.cell (rowWd, colWd) .Range.Text) Rem Pag-access sa susunod na haligi y = y + 1 Susunod na colWd Rem Pagpunta sa susunod na hilera at magsimula mula sa haligi 1 y = 1 x = x + 1 Susunod na rowWd Nagtatapos Sa Susunod na Pagtatapos Sa Rem hindi namin kailangang i-save ang salitang dokumento na wddoc. Magsara ng Mga Pagbabago: = Maling Rem ay tumigil kami sa application ng MS Word na Wd Ang App.Quit Rem Sa wakas ay pinakawalan namin ang memorya ng system na inilalaan para sa 2 variable ng bagay Itakda ang wddoc = Walang Itakda WdApp = Walang Wakas Sub 

Bagay na dapat alalahanin

  1. Mayroong ilang solong-bagay na bagay, kung saan isang halimbawa lamang ng object ang nabuo, hindi alintana ang bilang kung saan pinatakbo ang CreateObject. Ang pag-andar ng GetObject sa lahat ng oras ay nagbabalik ng parehong halimbawa kapag tinawag ito na may isang string na zero haba at dumating ang isang error kung hindi binanggit ang argumentong 'pathname'.
  2. Hindi namin magagamit ang GetObject upang ma-access ang isang sanggunian sa isang klase na nilikha sa VBA.
  3. Kung sakali, walang aktibong halimbawa ng Application ng MS Word, o hindi namin nais ang bagay na pinasimulan na may isang file na na-load pagkatapos ay ginamit muna namin ang function na CreateObject upang likhain ang bagay at pagkatapos ay gamitin ang GetObject function upang ma-access ang object.