Forum » Pomoč in nasveti » Excel skripta - deluje ampak ne deluje
Excel skripta - deluje ampak ne deluje
mitkos ::
Imam skripto oziroma makro v Excelu, ki naj bi po kliku na gumb vnesel podatke iz txt datoteke v Excel. Zadeva deluje, razen v nekaj primerih ne deluje in ne ugotovim zakaj ne.
Skripta naj bi vnesla podatke iz txt datoteke. Podatki, ki še niso bili vnešeni v Excel so od podatkov, ki so bili že vnešeni v excel ločeni z prazno vrstico in delimiter je v primeru že vnešenih podatkov tabulator, v primeru nevnešenih podatkov pa ";". Torej ko so podatki vnešeni v Excel se delimiter spremeni v tabulator. Imam možnost avtomatskega prenosa ali pa ročnega (da pokaže podatke, ampak jih je potem potrebno ročno kopirati)
Skripta ne deluje v primeru, da podatkov še nikoli nisem prenesel v Excel in sicer so opazke sledeče:
V txt datoteki imam 1 vrstico podatkov: prikaže 1 vrstico podatkov (ročno), ampak avtomatski prenos ne deluje (ni novih podatkov). Tudi delimiter se ne spremeni v tabulator, torej txt datoteka ostane nespremenjena.
V txt datoteki imam 2 vrstici podatkov: prikaže 2 vrstici podatkov (ročno), ampak avtomatski prenos ne deluje (ni novih podatkov). Tudi delimiter se ne spremeni v tabulator, torej txt datoteka ostane nespremenjena.
V txt datoteki imam 3 vrstice podatkov: Prikaže 3 vrstice podatkov (ročno), avtomatsko prenese le prvo vrstico podatkov. Pravilno izpiše koliko vrstic podatkov se je vpisalo. TXT datoteka se spremeni, torej delimiter je za vse 3 vrstice podatkov sedaj tabulator (dejansko izgubim potem 2 in 3 vrstico podatkov)
V txt datoteki imam 4 ali več vrstic podatkov: Prikaže in prenese vse podatke pravilno toda vedno izpiše za število 2 manj vnešenih vrstic podatkov. Delimiter se v txt datoteki spremeni na tabulator.
Če po prvem vnosu v Excel ko se txt datoteka spremeni, ponovno pišem nove podatke v txt datoteko in želim kasneje nove podatke avtomatsko prenesti v Excel, pa deluje vse OK, ne glede na to ali imam 1,2,3 ali več novih vrstic podatkov. Tudi štetje je potem pravilno.
Ugotovil sem, da če v txt datoteko, preden prvič vnašam podatke v Excel v prve 3 vrstice dodan 0 (podatki morajo biti že vpisani) in nato prazno vrstico in potem podatke (simuliram kakor da sem že vnašal podatke v Excel) deluje vse OK.
Podatke pišem v txt datoteko z nekim drugim programom.
Txt datoteka in Ecxel ne smeta imeti istega imena datoteke!
Primer podatkov (txt datoteka), v tem primeru bo skripta vnesla le 1 vrstico s podatki)
prazna vrstica
1;5;2;1;1
1;5;2;1;2
1;5;2;1;3
Skripta, ki jo uporabljam (napiše mi da uporabljam nedovoljeno HTML oznako, če prilimam tekst skripte):
Rad bi da skripta vnese podatke v Excel in spremeni delimiter že vnešenih podatkov iz ";" v tabulator. Vsakič naslednjič pa vnese le tiste nove podatke, ki imajo za delimiter ";" lahko so od prejšnjih ločeni z vrstico, lahko pa tudi ne. Ostale funkcinalnosti (obvestila, štetje) naj bi ostalo kot je.
Če se komu da malo pogledati in mi pomagat. Hvala.
Skripta naj bi vnesla podatke iz txt datoteke. Podatki, ki še niso bili vnešeni v Excel so od podatkov, ki so bili že vnešeni v excel ločeni z prazno vrstico in delimiter je v primeru že vnešenih podatkov tabulator, v primeru nevnešenih podatkov pa ";". Torej ko so podatki vnešeni v Excel se delimiter spremeni v tabulator. Imam možnost avtomatskega prenosa ali pa ročnega (da pokaže podatke, ampak jih je potem potrebno ročno kopirati)
Skripta ne deluje v primeru, da podatkov še nikoli nisem prenesel v Excel in sicer so opazke sledeče:
V txt datoteki imam 1 vrstico podatkov: prikaže 1 vrstico podatkov (ročno), ampak avtomatski prenos ne deluje (ni novih podatkov). Tudi delimiter se ne spremeni v tabulator, torej txt datoteka ostane nespremenjena.
V txt datoteki imam 2 vrstici podatkov: prikaže 2 vrstici podatkov (ročno), ampak avtomatski prenos ne deluje (ni novih podatkov). Tudi delimiter se ne spremeni v tabulator, torej txt datoteka ostane nespremenjena.
V txt datoteki imam 3 vrstice podatkov: Prikaže 3 vrstice podatkov (ročno), avtomatsko prenese le prvo vrstico podatkov. Pravilno izpiše koliko vrstic podatkov se je vpisalo. TXT datoteka se spremeni, torej delimiter je za vse 3 vrstice podatkov sedaj tabulator (dejansko izgubim potem 2 in 3 vrstico podatkov)
V txt datoteki imam 4 ali več vrstic podatkov: Prikaže in prenese vse podatke pravilno toda vedno izpiše za število 2 manj vnešenih vrstic podatkov. Delimiter se v txt datoteki spremeni na tabulator.
Če po prvem vnosu v Excel ko se txt datoteka spremeni, ponovno pišem nove podatke v txt datoteko in želim kasneje nove podatke avtomatsko prenesti v Excel, pa deluje vse OK, ne glede na to ali imam 1,2,3 ali več novih vrstic podatkov. Tudi štetje je potem pravilno.
Ugotovil sem, da če v txt datoteko, preden prvič vnašam podatke v Excel v prve 3 vrstice dodan 0 (podatki morajo biti že vpisani) in nato prazno vrstico in potem podatke (simuliram kakor da sem že vnašal podatke v Excel) deluje vse OK.
Podatke pišem v txt datoteko z nekim drugim programom.
Txt datoteka in Ecxel ne smeta imeti istega imena datoteke!
Primer podatkov (txt datoteka), v tem primeru bo skripta vnesla le 1 vrstico s podatki)
prazna vrstica
1;5;2;1;1
1;5;2;1;2
1;5;2;1;3
Skripta, ki jo uporabljam (napiše mi da uporabljam nedovoljeno HTML oznako, če prilimam tekst skripte):
Rad bi da skripta vnese podatke v Excel in spremeni delimiter že vnešenih podatkov iz ";" v tabulator. Vsakič naslednjič pa vnese le tiste nove podatke, ki imajo za delimiter ";" lahko so od prejšnjih ločeni z vrstico, lahko pa tudi ne. Ostale funkcinalnosti (obvestila, štetje) naj bi ostalo kot je.
Če se komu da malo pogledati in mi pomagat. Hvala.
kljuka13 ::
Veliko lažje bo pomagati, če nam prilepiš kodo, da jo lahko skopiramo in testiramo pri sebi. Če ne gre direktno v forum, uporabi katerega izmed spletnih orodij za nalaganje besedila (npr. https://pastebin.com/ ali https://controlc.com/).
Sicer pa praviš, da naj bi "Skripta vnesla podatke iz txt datoteke." Si poskusil z izdelavo poizvedbe iz tekstovne datoteke? Zavihek Podatki > Dobi in pretvori podatke > Iz besedila/CSV. Če narediš poizvedbo, potem se v Excelu ustvari "povezava" do tekstovne datoteke in z enim klikom na "Osveži" se preberejo trenutni podatki v datoteki in se tabela posodobi.
Sicer pa praviš, da naj bi "Skripta vnesla podatke iz txt datoteke." Si poskusil z izdelavo poizvedbe iz tekstovne datoteke? Zavihek Podatki > Dobi in pretvori podatke > Iz besedila/CSV. Če narediš poizvedbo, potem se v Excelu ustvari "povezava" do tekstovne datoteke in z enim klikom na "Osveži" se preberejo trenutni podatki v datoteki in se tabela posodobi.
mitkos ::
Prilimana skripta v pastebin, link zgoraj, upam da deluje.
Ugotovil sem, da štetje vnešenih podatkov (vrstic) tudi ne deluje pravilno, če je v txt datoteki več praznih vrstic (že predelani podatki z delimiterjem tabulator, potem prazna vrstica in recimo 5 vrstic podatkov z delimiterjem ";", potem pa zopet prazna vrstica in zopet recimo tri vrstice podatkov).
Ugotovil sem, da štetje vnešenih podatkov (vrstic) tudi ne deluje pravilno, če je v txt datoteki več praznih vrstic (že predelani podatki z delimiterjem tabulator, potem prazna vrstica in recimo 5 vrstic podatkov z delimiterjem ";", potem pa zopet prazna vrstica in zopet recimo tri vrstice podatkov).
kljuka13 ::
Da ugotoviš, kje pride do napake, moraš najprej zakomentirati vrstico
On Error GoTo 2Nato lahko opaziš, da se napaka pripeti v vrstici
Range("A:A").SpecialCells(xlCellTypeBlanks).Selectin sicer javi "Run-Time Error '1004': Nič celic ni bilo najdenih". Kako le, če pa so vse vrstice prazne? Kot lahko prebereš v tem odgovoru, xlCellTypeBlanks išče prazne celice zgolj v "uporabljenem območju" (torej znotraj največjega obsega nepraznih celic). Ker pa je tvoj dokument prazen, torej nima nobenega uporabljenega območja, zato v njem tudi seveda ne najde nobenih praznih celic. Ne vem sicer točno, zakaj brišeš te vmesne prazne vrstice. Odstrani ta del kode ali pa ga ovij v nek ločen "On Error GoTo".
Zgodovina sprememb…
- spremenil: kljuka13 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | (Java) Iskanje manjkajoči podatkov v tabeliOddelek: Programiranje | 1050 (815) | noraguta |
» | Uvoz txt datoteke v excelOddelek: Programska oprema | 5007 (4644) | sebavet |
» | kopiranje dela teksta iz večih datotekOddelek: Programska oprema | 811 (652) | kerrigh |
⊘ | python pomočOddelek: Programiranje | 3401 (2322) | Mavrik |
» | Excel pomočOddelek: Programska oprema | 2373 (1676) | smetko |