Nejste přihlášen/a.
Dobrý den,
toto je dotaz do registru ekonomických subjektů, který přes makro načte sám z RES údaje o dané firmě. Jsem v této věci naprostým začátečníkem.
ActiveWorkbook.XmlImport Url:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_res.cgi?ico="& Sheets(1).Range("D3").Value, ImportMap:=Nothing, Overwrite:=True, Destination:=("$A$1")
D3 je hodnota, ze které se načítá IČO organizace, $A$1 je cíl, kam se má vypsat výsledek. Takto dotaz do RES funguje bez problémů.
Problém je v tom, že pokud chci dotazů více, musím tento řádek pod sebou zopakovat tolikrát, kolik dotazů chci poslat a vždy nahradit to "D3"a "$A$1"za nový cíl
Myslel jsem, že to vyřeším cyklem, nicméně nedokážu VBA donutit k tomu, aby fungoval. Zkoušel jsem dva příklady níže, ale ani jeden data nenačítá. Hodnoty i a j jsou proměnné.
ActiveWorkbook.XmlImport Url:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_res.cgi?ico="& Sheets(1).Cells(4,i).Value, ImportMap:=Nothing, Overwrite:=True, Destination:=Cells(1,j)
ActiveWorkbook.XmlImport Url:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_res.cgi?ico="& Sheets(1).Range("D"&i).Value, ImportMap:=Nothing, Overwrite:=True, Destination:=("$A$"&j)
Určitě je to blbě. Může mi někdo poradit, jak to zapsat správně?
Díky moc Martin Hodek
Ano, zápis adresy buňky přes cells odpovídá formátu R1C1.
ActiveWorkbook.XmlImport Url:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_res.cgi?ico="& Sheets(1).Cells(4,i).Value, ImportMap:=Nothing, Overwrite:=True, Destination:=Cells(1,j)
V obou případech máš adresu řádku "natvrdo"tedy 4 a 1. Proměnné i a j nastavují číslo SLOUPCE!
Než nějaké opičárny s funkcí svyhedat by bylo vhodnější použít cyklus a v jednom kroku makrem zpracovat, tedy vyhledat na aresu ičo, pomocí makra vyzobat potřebné informace a zapsat je na výsledné místo na listu a poté zpracovávat další ičo.
Tím odpadne počítání řádků připadajících na jedno ičo. Mimochodem jak si přišel na 30 řádků? Zkoušel sem dvě iča, u jednoho bylo řádků 12 u druhého 6
Díky moc. Taková blbost. R1C1 a já to napíšu obráceně... A hned to funguje tak, jak má.
Jinak k těm dalším věcem: Velké organizace někdy mají velký počet různých CZ NACE, už jsem zijstil, že nestačí ani těch 30. Cyklus neprobíhá celým dotazem proto, že RES bohužel ani omylem není bezchybný, tj. někdy to vyhodí nesmysl a proto chci mít celou odpověď k dispozici.
Navíc, dotazy do veřejných rejstříku jsou zcela stejné, stačí změnit tu část _res za jinou, tj. dalším krokem bude to, že budu moci vybírat, do kterého registru se dotazuji a pomocí svyhledat budu měnit sloupce, ze kterých se budou zobrazovat potřebná data.
Ještě jednou díky za pomoc a pěkný den
Ano, aktivní list je jiný, než na který se pak vypíše výsledek. Ale to je i v původním zápise a ten funguje. Uživatel v jednom listě vypíše IČa, která chce získat, skript v jiném listě získá výsledky (a tam je spousta věcí, které nepotřebuji, navíc v nesrozumitelném formátu - kódy hodnot místo textu). Ty vypíše pod sebe, každé IČO na 30 řádků. Z toho se vyberou potřebné údaje, ty se převedou pomocí SVYHLEDAT do textové srozumítelné podoby a vypíší zpět na ten list, kde byla IČa zadána.
Takže, to že pracuji s více listy vím. Já přesně potřebuji vlastně to, co bych v běžném excelu udělal pomocí funkce CONCATENATE a NEPŘÍMÝ.ODKAZ, tj. stále stejný sloupec (D a A), ale po každém cyklu vyšší číslo řádku (D1, D2, D3..., resp. A1, A31, A61...)
Co jsem nevěděl, je použití Cells. Myslel jsem, že je to adresa buňky ve formátu R1C1. Není tomu tak?
Díky
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.