seštevanje podatkov iz več delovnih zvezkov
seštevanje podatkov iz več delovnih zvezkov
pozdravljeni
v mapi imam zvezke od januarja do decembra.v vseh teh zvezkih so enake tabele z različnimi podatki.zanima me,kako bi v nov delovni zvezek
seštel vse te podatke.poznam klasičen postopek - s povezavami,pa me zanima,če obstaja kaj bolj elegantnega in hitrejšega,recimo z makrojem.
za odgovor se zahvaljujem.
lp rick
v mapi imam zvezke od januarja do decembra.v vseh teh zvezkih so enake tabele z različnimi podatki.zanima me,kako bi v nov delovni zvezek
seštel vse te podatke.poznam klasičen postopek - s povezavami,pa me zanima,če obstaja kaj bolj elegantnega in hitrejšega,recimo z makrojem.
za odgovor se zahvaljujem.
lp rick
:) Seveda obstaja način z makrom. Z makrom lahko naredite popolnoma vse, kar lahko naredite "ročno"... samo napisati je potrebno makro
Nekaj podobnega imate recimo tukajle: viewtopic.php?t=151&highlight=dir
Nekaj podobnega imate recimo tukajle: viewtopic.php?t=151&highlight=dir
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljeni
najprej hvala za odgovor
hmm,ogledal sem si kodo:
moram priznati,da tega makra ne razumem,niti nevem kaj pomeni "zdruzidatoteke",a je to seštevanje nali morda vsi listi v enem zvezku?
no,da ne bom kompliciral,jaz bi si želel sledeče:
imam mapo "c:\meseci" v kateri se nahajajo zvezki z enako strukturo.
želel bi sešteti podatke v vseh zvezkih ,ki se nahajajo v celicah a1,a2,a3.....a20
[jan]list1!a1+[feb]list1!a1+......
tako nekako
upam,da moje vprašanje ni pretežko.
za odgovor se najlepše zahvaljujem.
lp rick
najprej hvala za odgovor
hmm,ogledal sem si kodo:
Koda: Izberi vse
Sub ZdruziDatoteke()
Dim Mapa As String
Mapa = "c:\help\test"
Dim NovaDatoteka As Workbook
Set NovaDatoteka = Workbooks.Add
Dim datoteka
datoteka = Dir(Mapa & "\*.xls")
Do While datoteka <> ""
Dim wb
Set wb = Workbooks.Open(datoteka)
Sheets.Copy before:=NovaDatoteka.Sheets(1)
wb.Close
datoteka = Dir
Loop
End Sub
no,da ne bom kompliciral,jaz bi si želel sledeče:
imam mapo "c:\meseci" v kateri se nahajajo zvezki z enako strukturo.
želel bi sešteti podatke v vseh zvezkih ,ki se nahajajo v celicah a1,a2,a3.....a20
[jan]list1!a1+[feb]list1!a1+......
tako nekako
upam,da moje vprašanje ni pretežko.
za odgovor se najlepše zahvaljujem.
lp rick
Koda: Izberi vse
Sub ZdruziDatoteke()
LPB
pozdravljeni
no,že več dni se trudim,pa mi ne rata,da bi združil več delovnih zvezkov
v enega
priznam,da nimam veliko pojma kar se tiče makra.......
pravzaprav,bi rad,da mi združi vse delovne zvezke(toda ne vse liste,temveč samo list-e1),ki se nahajajo v zvezkih in v neki mapi na c:\.
obstaja kakšna elegantna rešitev za moj problem?
vesel bom vašega odgovora.
lp rick
no,že več dni se trudim,pa mi ne rata,da bi združil več delovnih zvezkov
v enega
priznam,da nimam veliko pojma kar se tiče makra.......
pravzaprav,bi rad,da mi združi vse delovne zvezke(toda ne vse liste,temveč samo list-e1),ki se nahajajo v zvezkih in v neki mapi na c:\.
obstaja kakšna elegantna rešitev za moj problem?
vesel bom vašega odgovora.
lp rick
lp miha1
Natanko to vam naredi omenjeni makro; delovne zvezke pa vzame iz mape, ki jo zapišete v drugo vrstico makra:miha1 napisal/-a:pravzaprav,bi rad,da mi združi vse delovne zvezke(toda ne vse liste,temveč samo list-e1),ki se nahajajo v zvezkih in v neki mapi na c:\.
Koda: Izberi vse
Mapa = "c:\help\test"
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen Matjaž
ok, ampak vedno se mi ustavlja pri:
poleg tega je problem,ker so vsi zvezki odprti.
je možno da bi ostal odprt samo zvezek kjer so listi združeni,ostali zvezki pa bi se zaprli.
za odgovor se najlepše zahvaljujem
lp rick
ok, ampak vedno se mi ustavlja pri:
Koda: Izberi vse
Set wb = Workbooks.Open(datoteka)
je možno da bi ostal odprt samo zvezek kjer so listi združeni,ostali zvezki pa bi se zaprli.
za odgovor se najlepše zahvaljujem
lp rick
pozdravljen
hja,smešno,napiše mi,da datoteke *.xls(jan,feb,mar,apr....) ni mogoče najti,preverite ali ste napisali pravo ime datoteke (run-time error 1004).zanimivo,vse te datoteke so v mapi na( Mapa = "C:\test"),vaš makro sem temu primerno popravil,pa se kljub temu ustavlja.kaj delam narobe?
za odgovor se zahvaljujem
lp rick
hja,smešno,napiše mi,da datoteke *.xls(jan,feb,mar,apr....) ni mogoče najti,preverite ali ste napisali pravo ime datoteke (run-time error 1004).zanimivo,vse te datoteke so v mapi na( Mapa = "C:\test"),vaš makro sem temu primerno popravil,pa se kljub temu ustavlja.kaj delam narobe?
za odgovor se zahvaljujem
lp rick
Pozdravljeni!
Tudi sam sem preizkusil makro in res se obnaša tako kot je napisal rick. Da pa je makro stvar izvedel, sem pa ga pripravil takole:
V mapi kjer so zvezki, ki naj se združijo, sem odprl prvi zvezek, naj ga poimenujem "Moj zvezek" in nato pognal makro. Seveda se je ustavil kot je bilo že napisano in sem mu v pojavnem oknu ukazal naj se konča izvajanje (End). Zdaj se nahajam v zvezku, ki ga je makro ustvaril. (Zvezek1 oz Book1) Pritisnem na ikono Odpri in v mapi, kjer se nahajajo zvezki za združitev, ponovno odprem "Moj zvezek" in spet poženem makro za združevanje. In zanimivo , zdaj makro naredi kar mora, brez vsakega problema in pritožb. Ustvari pa to v Zvezek2 oz. Book2. Prav zanimivo! Zdaj pa ostane samo še: "Shrani"!
Me prav zanima rick, če bo tudi vam na ta način uspelo. Poročajte...
P.S. Makro sem imel v osebnem zvezku z makri - (Personal)
Tudi sam sem preizkusil makro in res se obnaša tako kot je napisal rick. Da pa je makro stvar izvedel, sem pa ga pripravil takole:
V mapi kjer so zvezki, ki naj se združijo, sem odprl prvi zvezek, naj ga poimenujem "Moj zvezek" in nato pognal makro. Seveda se je ustavil kot je bilo že napisano in sem mu v pojavnem oknu ukazal naj se konča izvajanje (End). Zdaj se nahajam v zvezku, ki ga je makro ustvaril. (Zvezek1 oz Book1) Pritisnem na ikono Odpri in v mapi, kjer se nahajajo zvezki za združitev, ponovno odprem "Moj zvezek" in spet poženem makro za združevanje. In zanimivo , zdaj makro naredi kar mora, brez vsakega problema in pritožb. Ustvari pa to v Zvezek2 oz. Book2. Prav zanimivo! Zdaj pa ostane samo še: "Shrani"!
Me prav zanima rick, če bo tudi vam na ta način uspelo. Poročajte...
P.S. Makro sem imel v osebnem zvezku z makri - (Personal)
lp,
cedra
cedra
helo cedra
najprej ena velika hvala....
sem točno tako naredil.kot ste napisali-precej komplicirano,se strinjate?
ja na koncu so res vsi ti listi v enem zvezku (book2).
res pa je tudi,da meni druži vse liste in ne samo sheet1-e(rabil bi samo list-e1) kot je razvidno iz makra,kar bi se moralo zgoditi,mislim pa,da je tako omeni tudi Matjaž.
seveda bi blo fino,če bi bil makro malo bolj dodelan.
predvidevam,da ste se precej namučili okrog tega,če boste slučajno še kaj naredili okrog tega,bi prosil,da mi to javite.
vesel bom vsakega vašega nadaljnega nasveta.
lp rick
najprej ena velika hvala....
sem točno tako naredil.kot ste napisali-precej komplicirano,se strinjate?
ja na koncu so res vsi ti listi v enem zvezku (book2).
res pa je tudi,da meni druži vse liste in ne samo sheet1-e(rabil bi samo list-e1) kot je razvidno iz makra,kar bi se moralo zgoditi,mislim pa,da je tako omeni tudi Matjaž.
seveda bi blo fino,če bi bil makro malo bolj dodelan.
predvidevam,da ste se precej namučili okrog tega,če boste slučajno še kaj naredili okrog tega,bi prosil,da mi to javite.
vesel bom vsakega vašega nadaljnega nasveta.
lp rick
Zdravo!
No, tole zgornjo kodo sem spravil skupaj.
Spremenite ime (name), lista v kodi, ki ga želite kopirati iz vseh zvezkov, tako kot ga imate poimenovanega vi, (v mojem primeru = "Moj list"! Seveda to velja, če so imena listov, ki jih želite združiti, v vseh zvezkih enaka, vsaj tako sem vas razumel!!!
Makro pa morate pognati tako, kot sem vam opisal v prejšnjem postu.
Upam, da vam bo zdaj uspelo.
Koda: Izberi vse
Sub ZdruziDatoteke()
Dim Mapa As String
Mapa = "c:\test"
Dim NovaDatoteka As Workbook
Set NovaDatoteka = Workbooks.Add
Dim datoteka
datoteka = Dir(Mapa & "\*.xls")
Do While datoteka <> ""
Dim wb
Set wb = Workbooks.Open(datoteka)
For i = 1 To Sheets.Count
If wb.Sheets(i).Name = "Moj list" Then Sheets(i).Copy before:=NovaDatoteka.Sheets(1)
Next i
wb.Close
datoteka = Dir
Loop
End Sub
Spremenite ime (name), lista v kodi, ki ga želite kopirati iz vseh zvezkov, tako kot ga imate poimenovanega vi, (v mojem primeru = "Moj list"! Seveda to velja, če so imena listov, ki jih želite združiti, v vseh zvezkih enaka, vsaj tako sem vas razumel!!!
Makro pa morate pognati tako, kot sem vam opisal v prejšnjem postu.
Upam, da vam bo zdaj uspelo.
lp,
cedra
cedra
Nimam časa preizkusiti vseh makrov, ki jih napišem... Je pa dobro, da se malce trudite tudi sami, tako se največ naučite.
Da pa bi ne bilo potrebno tako telovaditi okoli izvedbe makra, preprosto popravite vrstico, ki je napačna in makro bo deloval tako kot bi moral že na začetku :
Da pa bi ne bilo potrebno tako telovaditi okoli izvedbe makra, preprosto popravite vrstico, ki je napačna in makro bo deloval tako kot bi moral že na začetku :
Koda: Izberi vse
' torej namesto vrstice
Set wb = Workbooks.Open(datoteka)
' napišite
Set wb = Workbooks.Open(Mapa & "\" & datoteka)
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator