Skúste si poupraviť toto, čo som dávnejšie použil.
Sub DownloadXML() 'Stiahnutie suboru XML z netu
Dim myURL As String 'Adresa suboru XML
Dim WinHttpReq As Object
myURL = "http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.xml"
On Error GoTo ErrorHandler 'Ak je chyba pri stahovani, ukladaní, ukonci
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.Send 'Vytvor pripojenie
myURL = WinHttpReq.ResponseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.ResponseBody 'Preber subor
oStream.SaveToFile Application.ActiveWorkbook.Path & "\Kurz.xml", 2 'Uloz subor, prepis stary
oStream.Close
End If
Range("C3").Value = ZistiKurz 'Zapis kurz do C3
ErrorHandler:
End Sub
Ak si zadáte do Googlu dotaz, musí na Vás vyblafnúť množstvo riešení. Napr na MSDN:
Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Function DownloadFile(URL As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
If lngRetVal = 0 Then DownloadFile = True
End Function
Sub downFLash()
Dim sURL As String
Dim LocalFilename As String
Dim filename As String
Const UNC = "C:\Documents and Settings\All Users\Documents\My Music\"
filename = "20050628091444_1.mp3"
sURL = "http://jrc.donga.com/nihao_service/200506/" & filename
LocalFilename = UNC & filename
Debug.Print DownloadFile(sURL, LocalFilename)
End Sub
Obmedzenie počtu riadkov robí tie problémy. Nahraďte v Definovanom názve "zdroj" to číslo 65535 za ROWS(Data!$A:$A), a bude to fungovať.
Chcete aj vysvetlenie ? CountBlank počíta s novým počtom riadkov (Excel 2007), ale pôvodný vzorec je navrhnutý tak, že to vráti chybu, lebo je tam natvrdo napísané maximum riadkov. Lenže to maximum platilo v 2003. Teraz je to milión. Takže dostanete cca 65535-1046385=-980850 riadkov. Čo je blbosť, záporné číslo. Stačí takto ?
Možno OT: Ale nemá toto už integrované riešenie ponúkané priamo tu na fóre ?
http://wall.cz/excel-sablony/formular-faktura-iii
Neskúmal som, z ekonomiky viem aj tak prd, len ma to napadlo.
Či by čas vynaložený na vývoj nestál za tie peniaze...
Nevoláte to makro z iného zošitu, alebo formulára ? Skúste použiť "With". U mňa všetko OK, ale volám to z aktívneho listu "List1". Ak to bude s "With" tak to môžete volať odkiaľkoľvek.
No, akoby som to povedal ... to Vaše makro je hrozné, vymazal som Vám tie tisíce riadkov, zjednodušil mnoho vecí, zrušil Selecty, ale poviem Vám, že minimálne od tej hviezdičkovanej čiary, ktorú som Vám tam urobil, netuším o čo ide. V tom makre sa pokúšate o toľko Selectov, Filtrov, vkladaní riadkov, jednoducho som to nerozlúštil, a vôbec netuším, či som Vám s tým zjednodušovaním neurobil nejakú chybu. Každopádne moje makro som Vám upravil tak, aby sa volalo pomocou Call odkiaľkoľvek, teraz je na konci Vašeho. Čiže už to nemáte tak, že sa spustí automaticky. Spúšťa ho Vaše makro, čiže ako si spustíte to Vaše makro neviem.
Aby som toľko nepísal, tiež nemám čas, ak chcete urobiť z jednej tabuľky úplne inú, a chcete s tým pomôcť, bez reálnych vstupných dát, a reálneho požadovaného výstupu, Vám s tým asi nepomôžem. Pretože je to čistá tipovačka (z mojej strany).
Pozrite sa na to, a niečo s toho snáď použijete.
To s tým "Zatvoreným" súborom bol len typ, takže to neberme ako mernú mincu. Celý môj príspevok je len typ, ako to mohol užívateľ asi myslieť, lebo presne takto uvažuje väčšina ľudí. To nieje výtka, len konštatovanie. A nemyslel som zatvorený ako Closed, ale "akože zatvorený" ako Hide. To som aj písal že cez inštanciu Excelu.
Každopádne prípadné riešenie (ak nejaké bude), zaujme asi viac ľudí. Keďže drvivá väčšina si pletie Excel s DB. Ale to je prirodzené, lebo Excel je docela User Friendly, narozdiel od takmer akejkoľvek DB.
Počkajme na Tlumic01, uvidíme.
Fúúha, tak teraz Vám už nerozumiem vôbec. Z tohoto makra chcete volať nejaké iné makro ? Stačí do kódu na vhodné miesto (podľa toho čo to má robiť) napr. pred "End Sub" v prípade, že sa má vykonať vždy pri zmene (akejkoľvek):
Call NazovMakra
Ak sa to má vykonať iba vtedy keď sa mažú rie riadky, tak pred "Application.EnableEvents = True" to Call dajte.
Ak má tento proces vymazávania byť volaný z iného makra, tak bude lepšie prerobiť toto makro na proceduru a nie udalosť, a volať procedúru z Vašeho makra.
Nieje problém, len sa musíte vyjadrovať podstatne konkrétnejšie, a urobíme...
Zrovna ste písal príspevky, keď som editoval môj
Nie. Excel sníma rôzne udalosti. A vo Vašom kóde sa sníma udalosť akejkoľvek zmeny v bunkách celého listu. Ak teda čokoľvek, kdekoľvek zmeníte, vyvolá sa Váš kód, ktorý skontroluje, či bola zmena v stĺpci 4. Ak nie, nič sa neudeje, ale ak ńo, skontroluje či ste nemenili náhodou hlavičku, vtedy tiež nič neurobí. Ale ak ste vykonali zmenu v D od 2. riadku pokiaľkoľvek, tak zistí koľko riadkov v celom liste vo všetkých stĺpcoch je použitých, ďalej zistí posledný zaplnený riadok v D, a jednoducho vymaže všetko za posledný zaplneným v D. Makro sa spúšťa automaticky samo.
EDIT: Aha, Vám nejde do hlavy, prečo tam boli tie riadky, keď ste súbor otvoril ? No preto aby ste videl, čo to urobí. Stačí proste napr. označiť prázdnu bunku a stlačiť DELETE. Čáry-máry-fuk, a je to.
Ten môj kód funguje presne tak ako chcete. Skúšali ste ho vôbec ? Ja som ho iba skopíroval do Vašeho zošitu, a fachá.
Navyše som Vám ho teraz aj okomentoval, aby ste vedeli, čo to robí.
EDIT:
urobte nejakú zmenu v stĺpci 4 (D), napr. vymažte bunku, a uvidíte, že to funguje. Reaguje to na zmenu v stĺpci D, teda Vy makro nespúšťate, ono to je "autonómne".
To bol čistý tip, nič viac. Záleží na toľkých veciach, ktoré neboli v spomenuté zadaní ...
-Bude to sieťový súbor, ktorý musí byť stále aktuálny?
-Bude zatvorený, či otvorený?
-Ako často musí prebiehať aktualizácia zoznamu (ak sa nejedná o prvý bod)?
-Akú udalosť prípadne použiť? Záleží na presnom použití, tak ako píše eLCHa.
-Ak by sa nejednalo o bod 1, tak môže byť aj ten TXT s importom pri otvorení zoznamového zošitu, ale problém bude ak sa na ten zoznamový zošit bude naväzovať iná činnosť, napr čítanie z tohto zošita (zatvoreného) ďalej.
...
No uvidíme po upresnení.
No veď práve o tom hovorím. Len som napísal, že som asi pochopil čo dotyčný chce. Ale netuším ako to urobiť, preto som napísal že to bude problém...
Musí sa vytvoriť nová inštancia Excelu a v nej manipulovať so Zoznamovým súborom, inak ma nenapadá. Takéto riešenie je tu myslím už X-krát prezentované.
Ja som to asi pochopil.
-V šablóne bude makro (ak je to možné) Worksheet_Change pre sledovanú oblasť.
-Každú zmenu zapíše do iného zatvoreného zošitu na prvý prázdny riadok listu Spolu.
-V tomto zatvorenom zošite bude v druhom liste Zoznam, vytriedenie jedinečných hodnôt z listu Spolu.
-Čiže keď ho otvoríme, budeme mať k dispozícii zoznam.
-A je to tu, problém zisťovania počtu riadkov v zatvorenom zošite, zapisovanie množstva zápisov do zatvoreného zošitu...
Bude to problematické...
Pre niečo takéto je dôležité vedieť, či bude mať tabuľka hlavičky, alebo koľko riadkov bude pred samotným prvým dátovým riadkom.
- Budú dáta v tabuľke začínať v A1 ? Ak nie, tak kde ?
- Pod posledným riadkom tabuľky bude ešte niečo iné ? Čiže aj vedľa tabuľky či niečo bude presahovať smerom dole posledný riadok tabuľky.
- V ktorom stĺpci teda má byť kontrola posledného dátového riadku, najskôr ste vravel 4. teraz 3. ?
Poprosím odpovedať na všetko, lebo je to dôležité pre určovanie pozície.
Skúste vymazať to X uvidíte, čo sa udeje, či je to to, čo ste chcel.
-Otvoríte si zošit
-Stlačte ľavý Alt+F11
-Rozplusknite si položku VBAProject(názov Vašeho zošitu)
-Rozplusknite si pod tým Microsoft Excel Objects
-Dvojklik na názov listu, v ktorom to chcete mať.
-Do toho bieleho okna vpravo píšete makro kód, tak tam to vložte.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.