< návrat zpět

MS Excel


Téma: VBA vyplní WebForm,ale ten se chová jako prázdný rss

Zaslal/a 27.9.2017 11:37

Dobrý den, potřebuji prohledat tři databáze shromažďující informace o vědeckých pracovních a seznamy jejich publikací, jde o to zjistit, zda konkrétní autor již nemá profil založen, případně jeho ID. Jedná se o tyto tři databáze: ORCID, Scopus Author ID a ResearcherID. Protože musím zjistit tyto údaje pro řádově několik set lidí, vyrobil jsem si ve VBA pomocníka vyplňujícího příjmení a jméno + spouštějícího vyhledávání. Ve Scopusu a ResearcherID funguje, v ORCID nikoliv. Přitom: 1) kód ORCID a Scopus je principiálně stejný, 2) podivné je, že kód sice v ORCID vyplní políčka, ale vyhledávání nefunuje s hláškou "You must populate a least one field." (tj. jako bych nic nevyplnil), přitom když udělám klasické kopírování klávesami/myší, vše pracuje OK. Nějaký nápad? Napadlo mne pomoci si kopírováním, ale IE.Document.getElementById("").Paste nefunguje, viz. http://www.ozgrid.com/forum/showthread.php?t=198730 Soubor s kódem je na https://uloz.to/!zUgCda8ClM0H/priklad-xlsm , je třeba mít aktivovánu buňku "Zima".

Zaslat odpověď >

#037829
avatar
Odpovím si sám, snad má odpověď ušetří v budoucnu čas někomu dalšímu, kdo bude řešit něco podobného.

Jedná se o stránky s AJAX Javascriptem. Na netu jsou dost složité návody, jak jej obejít, mně nakonec fungovalo celkem primitivní řešení. Protože bylo potřeba "fyzicky" (=klávesnicí) zadat nějaký znak do políčka, napadla mne emulace klávesnice.

Ve Win7 sice asi opravdu ve VBA nefungují kombinace CTRL+C a CTRL+V, a nepodařilo se mi je rozchodit ani úpravou registru, jak zněla rada a porada z netu, avšak funkce "Sendkeys" funguje, takže mohu použít následující:

IE.Document.forms("searchForm").Item(3).Value = cell.Value
IE.Document.forms("searchForm").Item(3).Click
Application.wait (Now + TimeValue("0:00:01"))
Sendkeys " "

V podstatě jsem jenom za vloženou hodnotu z buňky Excelu přidal "jakože fyzickým" stiskem mezeru (kterou vyhledávač následně ignoruje)a vyhledávací formulář vyhledává 5

Netvrdím, že se jedná o univerzální řešení, v každém případě alespoň mně funguje dobře. Též je možné použít následující:

Sendkeys cell.Offset(0, 1).Value, True
Sendkeys "Tomáš"

V prvním případě "úhoz po úhozu" napíše VBA do formuláře obsah buňky, v druhém případě napíše statický text.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje