Automatizējiet Internet Explorer (IE), izmantojot VBA

Šajā lapā ir kodēšanas piemēri Internet Explorer (IE) automatizēšanai, izmantojot VBA.

** Atjauninājums 6.6.2019.: Pašlaik labākais veids, kā panākt tīmekļa automatizāciju, izmantojot VBA, ir selēna izmantošana. Šajā rakstā nav iekļauts selēns. Tālāk sniegtie piemēri darbosies un var būt pietiekami jūsu vajadzībām. Tomēr, ja jums ir sarežģītākas vajadzības vai vēlaties kļūt par tīmekļa automatizācijas ekspertu, es stingri iesaku tā vietā izmantot selēnu. Dan Strong tīmekļa automatizācijas kurss (atlaide pieejama, izmantojot šo saiti) ir lielisks resurss selēna apgūšanai:

(Es saņemu saistīto komisiju no Dan kursa)

Dodieties uz tīmekļa vietni, izmantojot VBA

Pirmais koda gabals atver IE un pāriet uz vietni. Otrā koda daļa atver IE, pāriet uz vietni un mijiedarbojas ar ievades lodziņu.

12345678910111213141516171819202122232425262728293031323334353637 Sub Automate_IE_Load_Page ()"Tādējādi IE tiks ielādēta tīmekļa lapaDim un tik ilgiAptumšot URL kā virkniDim IE kā objektsDim objElement As ObjectDim objCollection kā objekts"Izveidojiet InternetExplorer objektuIestatīt IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, lai padarītu IE redzamu, vai False, lai IE darbotos fonāIE.Visible = True'Definējiet URLURL = "https://www.automateexcel.com/excel/""Dodieties uz URLIE. Pārvietojieties pa URL"Statusa josla ļauj lietotājam zināt, ka vietne tiek ielādētaApplication.StatusBar = URL & "tiek ielādēts. Lūdzu, uzgaidiet …"'Pagaidiet, kamēr IE tiek ielādēts …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileDarīt līdz IE.ReadyState = 4: DoEvents: Loop 'Darīt līdz'Tīmekļa lapa ielādētaApplication.StatusBar = URL un "ielādēts""Izkraut IEIestatīt IE = NekasSet objElement = NekasSet objCollection = NekasBeigu apakš

Ļoti izplatīta problēma, ar ko cilvēki saskaras, strādājot ar IE VBA, ir VBA, kas mēģina palaist kodu pirms Internet Explorer ir pilnībā ielādēts. Izmantojot šo kodu, jūs sakāt VBA atkārtot cilpu, līdz IE ir gatava (IE.ReadyState - 4).

1234 'Pagaidiet, kamēr IE tiek ielādēts …'Do while IE.ReadyState = 4: DoEvents: Loop 'Do whileDarīt līdz IE.ReadyState = 4: DoEvents: Loop 'Darīt līdz

Ņemiet vērā arī šo koda rindu:

1 IE.Visible = TRUE

Šis kods pārslēdz to, vai IE darbojas fonā vai priekšplānā.

Atveriet URL un ievadiet datus formā, izmantojot VBA

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 "Tam ir jābūt moduļa augšdaļā. To izmanto, lai iestatītu IE kā aktīvo loguPubliskās deklarēšanas funkcija SetForegroundWindow Lib "user32" (ByVal HWND tik ilgi) tik ilgiSub Automate_IE_Enter_Data ()"Tādējādi IE tiks ielādēta tīmekļa lapaDim un tik ilgiAptumšot URL kā virkniDim IE kā objektsDim objElement As ObjectDim objCollection kā objektsDim HWNDSrc tik ilgi"Izveidojiet InternetExplorer objektuIestatīt IE = CreateObject ("InternetExplorer.Application")'Set IE.Visible = True, lai padarītu IE redzamu, vai False, lai IE darbotos fonāIE.Visible = True'Definējiet URLURL = "https://www.automateexcel.com/vba""Dodieties uz URLIE. Pārvietojieties pa URL"Statusa josla ļauj lietotājam zināt, ka vietne tiek ielādētaApplication.StatusBar = URL & "tiek ielādēts. Lūdzu, uzgaidiet …"'Pagaidiet, kamēr IE tiek ielādēts …'Darīt, kamēr IE.ReadyState = 4: DoEvents: LoopVai līdz IE.ReadyState = 4: DoEvents: Loop'Tīmekļa lapa ielādētaApplication.StatusBar = URL un "ielādēts""Iegūstiet IE loga ID, lai mēs to varētu iestatīt kā aktivizācijas loguHWNDSrc = IE.HWNDIestatiet IE kā aktīvo loguSetForegroundWindow HWNDSrc'Ievades lodziņa atrašana un aizpildīšanan = 0Par katru itm In IE.document.allJa itm = "[objekts HTMLInputElement]" Tadn = n + 1Ja n = 3 Taditm.Value = "orksheet"itm.Focus 'Aktivizē ievades lodziņu (liek parādīties kursoram)Application.SendKeys "{w}", True 'Simulē taustiņu' W '. True saka VBA gaidīt', līdz taustiņu nospiešana ir pabeigta, pirms turpināt, ļaujot'javascript lapā, lai palaistu un filtrētu tabuluGoTo endmacroBeigas JaBeigas JaNākamais"Izkraut IEendmacro:Iestatīt IE = NekasSet objElement = NekasSet objCollection = NekasBeigu apakš

GetElement IE, izmantojot VBA

Mijiedarbība ar objektiem pārlūkprogrammā Internet Explorer bieži vien var radīt sāpes. Jums jānosaka, ar kādu konkrētu objektu strādāt. Iepriekš minētajā kodā mēs meklējam trešo gadījumu “[object HTMLInputElement]” (ievades veidlapa). Pēc tam ievades formā ievadām “orksheet” (itm.value = “orksheet”), pārvietojam kursoru ievades formā (itm.focus) un ierakstām “w”. Lai aktivizētu tabulas filtrēšanai izmantoto javascript, šajā gadījumā ir jāievada “w”.

Objektu atlasei ir vairāk tiešu metožu, tomēr šai metodei vajadzētu darboties, ja viss cits neizdodas.

Lai izmantotu šīs citas metodes, vēlaties izmantot šādas iespējas:

1234 IE.document.getelementbyid ("ID"). Value = "value" 'Atrast pēc IDIE.document.getelementsbytagname ("ID"). Value = "value" 'Atrast pēc tagaIE.document.getelementsbyclassname ("ID"). Value = "value" 'Atrast pēc klasesIE.document.getelementsbyname ("ID"). Value = "value" 'Atrast pēc nosaukuma

Izmantojot šīs metodes, var rasties problēmas, ja ir vairāki elementi ar tādu pašu nosaukumu. Izmantojot cilpu (kā iepriekšējā parauga kodā), varat norādīt, kuru elementa gadījumu izmantot.

Mijiedarbojieties ar IE, izmantojot VBA

Iepriekš minētajā kodā mēs izmantojam notikumu: Fokuss (itm.focus), lai aktivizētu kursoru formā.

Vairāk objektu/elementu notikumu, metožu un rekvizītu piemērus varat atrast šeit: https://msdn.microsoft.com/en-us/library/ms535893(v=vs.85).aspx

Ne visi no tiem darbosies ar katru objektu / elementu, un, mijiedarbojoties ar objektiem IE, var būt diezgan daudz izmēģinājumu un kļūdu.

Sūtīšanas taustiņi pārlūkprogrammai Internet Explorer

Iepriekšējā kodā mēs izmantojām komandu Sendkeys:

1 Application.SendKeys "{w}", True

Parasti atslēgvārdiem vajadzētu būt pēdējam līdzeklim. Parasti jums vajadzētu būt iespējai tieši mijiedarboties ar objektiem, tomēr dažreiz ir vieglāk vienkārši izmantot komandu Sendkeys. Sendkeys būtībā ir tas pats, kas rakstīt ar tastatūru. Pirms turpināt, jums jāpārliecinās, vai tiek izvēlēti pareizi logi un objekti. Sūtīšanas taustiņi var arī aktivizēt notikumus, kas tiek palaisti, pamatojoties uz lietotāju mijiedarbību tīmeklī. Iepriekš minētajā piemērā mēs izmantojam Sendkeys, lai aktivizētu Javascript filtru tabulā, ko izmantojam tīmekļa lapā.

Sendkeys ir divas ievades:
1. ievadīšanas atslēga (parasti ieskauj {}… {enter}, {q}…)
2. Pirms turpināt TRUE/FALSE, pagaidiet, līdz Sendkeys ir pabeigts. Strādājot ar pārlūkprogrammu Internet Explorer, šai kopai parasti ir jābūt patiesai.

Palaidiet programmu Internet Explorer fonā

Lai palaistu programmu Internet Explorer fonā, jums ir jādara divas lietas:

1. Izsauciet makro, kurā ir IE kods, izmantojot lietojumprogrammu. Palaidiet, lai makro darbotos fonā, turpinot darbu:

1 Application.Run ("Automate_IE_Load_Page")

Piezīme. Šis kods var pārtraukt jūsu darbu, vai arī jūsu darbs var traucēt kodu. Piemēram, ja izmantojat SendKeys, Sendkeys var nosūtīt taustiņsitienu nepareizai lietojumprogrammai. Esiet ļoti uzmanīgs ar šo.
2. Paslēpt IE:

1 IE.Visible = Nepareizi

Selēns un VBA

Ja šis raksts jums šķita noderīgs, iespējams, vēlēsities iepazīties ar Dan Strong tīmekļa automatizācijas kursu. Tas attiecas uz selēna lietošanu kopā ar VBA.

(Es saņemu saistīto komisiju no Dan kursa)

Atsauksme no viena no Dena studentiem

https://excelvbaisfun.com/wp-content/uploads/2019/06/dan_strong_complete_web_automation_course_review_VbFn2vwul8A_1080p.mp4

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave