Nejste přihlášen/a.

Přihlásit se do poradny

 

VBA makro Excel

Od: tronmkiheda* odpovědí: 4 změna:

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

 

 

4 odpovědi na otázku
Řazeno dle hodnocení

 

 

lobo*
hodnocení

2x

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

proexcel.cz/...

wall.cz/...

wall.cz/...

wall.cz/...

tronmkiheda*
hodnocení

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

 

lobo*
hodnocení

0x
Kód sem nezkoušel, sem na tel.
Tak jen pár postřehů. Víš že posouváš sloupce - cells(řádek,sloupec)?
Kam se má vypsat výsledek?
IČO načítáš z prvního listu buňky D3, v případě výsledku není list specifikován, je vložen na aktivní list = posuv nebo přemazání hodnot IČO.
tronmkiheda*
hodnocení

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

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

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.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]