[ Sudarica @ 02.12.2006. 20:24 ] @
| Opet trebam pomoć
Toliko se mučim s makro naredbama.
Imam datoteku koju moram u Excelu kompletnog urediti i poslati na adresu preme primatelju. Znači moram složiti sve primatelje po računu, a svaki račun može imati nekoliko svrha. Kada izdvojim svaki taj račun moram ga pospremiti kao knjigu i sa nazivom primatelja npr. Račun.xls na datum koji mi odrede poslati primatelju. Pošto ja to imam i do 100 primatelja molim Vas pomoć ako se ovo može možda urediti makro naredbom.
Pokušala sam sama to napraviti tako da snimam onako kako radim, ali dok primjenim modul na malo veći spisak ne radi dobro, odnosno ne znam šta moram napraviti da se to odnosi na cjelu radnu knjigu a ne na određene redove i kolone odnosno ćelije. Predpostavljam također da postoji mogućnost pospremanja radnih knjiga makronaredbom u jednu određenu datoteku.
Šaljem i primjer jer ne znam dali sam dobro objasnila.
Pozdrav |
[ Sudarica @ 02.12.2006. 20:37 ] @
Oprostite zaboravila sam na veličinu datoteke trebala sam pobristati malo više toga.
[ Jpeca @ 03.12.2006. 07:56 ] @
Da, kad imaš više operacija koje treba odaraditi na različitim opsezima - primateljima i snimanje po imenom koje se nađe u toj koloni - snimanje makroa nije idealno rešenje. U tom slučaju makro može samo da ti posluži kao početak, a posle da ručno izmeniš kod.
Podledaću tvoju svesku, pa kad budem imao vremena pokušaću da napravim neko rešenje, ako dotad neko drugi to već ne odradi.
[ Sudarica @ 03.12.2006. 09:42 ] @
Zahvaljujem na trudu. Pregledavajući stranice i čitajući Vaša objašnjenja puno sam naučila, a nadam se uz Vašu pomoć da ću naučiti i raditi krupnije makro naredbe. (U stvari već sam napravila nekoliko sitnijih. Tabele uglavnom preuzimam iz drugog programa. Za one manje zahtjevne napravila sam makroe i rade super. Ali ove velike, na koje gubim i po cjeli dan dok ih napravim, ubijaju.
Pozdrav
[ Jpeca @ 04.12.2006. 07:44 ] @
Čini mi se da si najveći deo problema napravila sebi pogrešnom organizacijom podataka. Šta god pokušaš da uradiš u takvoj tabeli moraš da se boriš protiv Excela umesto da ti on bude saveznik. Da bi ti Excel služio potrebno je da mu serviraš podatke onako kako on to voli - u vidu liste. U listama prvi red predstavlja zaglavlje, a jedna kolona sadrži isključivo jedan tip podataka. Nema praznih redova, najčešće ni praznih ćelija. Liste ćeš lako sortirati, filtrirati koristeći ugrađene funkcionalnosti excela. Za podatke koji su složeni u vidu liste lako ćeš napraviti totale pomoću pivot tabele.
U attachmentu pogledaj kako sam ja zamislio, pa izmeni kako treba - ja nisam tačno znao namenu svih podatka iz tvoje tabele.
Za formiranje liste možeš da koristiš makro koji će podatke iz originalne specifikacije da prebaci na kraj postojeće liste.
Za formiranje konačanog spiska po računu za jednog korisnika i njegovo čuvanje kao posebnog fajla kao takođe možeš da koristiš makro koji će iz liste prepisati sve potrebne podatke u obliku kom je potrebno. Takav makro biće mnogo lakše da se napravi, jer su podaci sređeni po redovima.
Vidi da li to može da se uradi kako sam ja zamislio, pa da onda pređemo na makroe. Naravno moguće je napraviti automatizaciju i u ovakvoj tabeli kakva jeste - ali kao što sam već rekao - to je jedrenje protiv vetra.
[ Sudarica @ 04.12.2006. 08:35 ] @
To je to
Ja sam pokušala isti sort, po računu i pomoću subtotala po svrhi zbrojiti iznose. Pivot tabele su mi nepoznate odnosno nisam ih koristila pokušaću. Totali mi služe za kontrolu sa drugim dokumentima a izlazna lista je treći korak. Znači ona je ustvari ono glavno u ovom svemu. Tu listu šaljem primateljima i ona mora sadržavati podatke onako kako sam napisala u trećem koraku. Mora biti pospremljena u npr.C:\R...\spisak 10\ Račun.xls znači po primateljima. Neznam dali sam dobro objasnila. Znači sve ovo je super, samo što ja moram malo pogledati Pivot tabele, ali na prvi pogled mi se čine jednostavne. Mislim da ste u potpunosti shvatili sve i da se tako može raditi.
Hvala
Pozdrav
[ Sudarica @ 04.12.2006. 09:00 ] @
Sjetila sam se još nečega primatelj može piti sa istim nazivom ali se razlikuje po računu, onda dodajem npr Račun1.xls, a bilo bi idealno da se doda primatelju YYY ili zadnja dva broja Broja računa. Znam da sam nemoguća, ali ako se može..............
[ Jpeca @ 04.12.2006. 14:10 ] @
Da li list (treći korak) šalješ primateljima formiraš jedan po jedan - ili za sve primatelje odjednom?
1/ Izbor primatelja
Ako formiraš jedan po jedan list potrebno je na neki način izabrati primatelja za koga se list formira. To može da se uradi tako što ćeš zahtevati od korisnika da unese ili selektuje ćeliju sa nazivom primatelja nakon startovanja makroa:
Code:
Prim = Application.InputBox( prompt:="Selektuj naziv primatelja" )
Prim je ovde promnljiva tipa string. Na sličan način možeš regulisati i druge podatke koje je potrebno uneti (datum, ...) da se formira list koj šalješ.
2/ Određivanje opsega redova u kojem se nalaze podaci
Za zadatog primatelja određuje se opseg redova na listu shPodaci u kome se nalaze podaci startRow do stopRow
Code:
Set shPodaci = ThisWorkbook.Sheets("Lista").
stopRow = shPodaci.Range("A65536").End(xlUp).Row ' Kraj liste
startRow = shPodaci.Columns("A").Find(Prim, _
LookIn:=xlValues, lookat:=xlWhole).Row
For rw = startRow + 1 To stopRow
If shPodaci.Cells(rw, 1).Text <> Prim Then
stopRow = rw - 1
Exit For
End If
Next rw
2/ Otvaranje šablona za slanje
Za formiranje lista koja šalješ čini mi se najlakše da napraviš posebnu radnu svesku koja će sadržati Logotip, naslov (?), odgovarajuće širine kolona - bez konkretnih podatak koje treba popuniti. Ova radna sveska poslužiće kao šablon za formiranje konkretnog lista za primaoca. Za otvaranje radne sveske koristiš metodu Open:
Code:
Set wbk = Workbooks.Open (filename:= ActiveWorkbook.Path & "\SlanjeEmpty.XLS", ReadOnly:=True)
Set shSlanje = wbk.Sheets(1)
Za filename treba da se zada kompletna putanja do radne sveske. U ovom slučaju ja sam pretpostavio da je u istoj fascikli kao i radna sveska u kojoj se makro nalazi. Radnu svesku otvaraš kao readonly jer ćeš je kasnije snimiti pod drugim imenom, a original uvek ostaje prazan. List sa kojim radimo pretpostavio sam da je 1.
3/ Upis podataka u radnu svesku primatelja
Za upis podataka referišeš se na odgovarajuću ćeliju šablona, lista shSlanje i u nju upisuješ odgovarajuće vrednosti iz shPodaci
Code:
'Zaglavlje
shSlanje.Range("B6").Value = pred 'Primatelj
shSlanje.Range("C6").Value = shPodaci.Cells(startRow, 2).Text ' 10 ZA
shSlanje.Range("B7").Value = shPodaci.Cells(startRow, 3).Text 'Broj racuna
rw = 10
novasvrha = True
' Stavke grupisane po svrsi
Do While startRow <= stopRow
If novasvrha Then
shSlanje.Cells(rw, 2).Value = shPodaci.Cells(startRow, 4) ' Svrha
novasvrha = False
Iznos = 0
rw = rw + 2
End If
shSlanje.Cells(rw, 1).Value = shPodaci.Cells(startRow, 5).Value ' Namena
shSlanje.Cells(rw, 2).Value = shPodaci.Cells(startRow, 6).Value ' Opis
shSlanje.Cells(rw, 3).Value = shPodaci.Cells(startRow, 7).Value ' ZZZ
shSlanje.Cells(rw, 4).Value = shPodaci.Cells(startRow, 8).Value ' Iznos
Iznos = Iznos + shPodaci.Cells(startRow, 8).Value
rw = rw + 1 ' sledeci red
startRow = startRow + 1
If shPodaci.Cells(startRow, 4).Text <> shPodaci.Cells(startRow - 1, 4).Text Then
rw = rw + 1
' Ispisi Total
shSlanje.Cells(rw, 1).Value = "Ukupno"
shSlanje.Cells(rw, 1).Font.Bold = True
shSlanje.Cells(rw, 4).Value = Iznos
shSlanje.Cells(rw, 4).Font.Bold = True
rw = rw + 5 ' preskoci redove
novasvrha = True
End If
Loop
4/ Čuvanje i zatvaranje radne sveske
Na kraju kad je radna sveska formirana treba je snimiti pod ogovarajućim imenom
Code:
sFileName = "C:\Spisak 10\" & prim & "-" & shPodaci.Cells(rw, 2) & ".xls"
wbk.SaveAs sFileName
wbk.Close
u promneljivoj sFileName formiraš naziv radne sveske koji želiš, uključujući i fasciklu u koju se snima. U primeru je naziv tipa RAČUN-10 ZA.xls
To bi otprilike bilo to. Na osnovu ovoga pokušaj da sama napraviš makro za prepis podataka iz početne specifikacie da prepiše na kraj liste sa podacima.
[ Sudarica @ 04.12.2006. 14:35 ] @
Jedva čekam da to sve proučim. Pivot tabele su lagane nisam ih nikad prije probala raditi a ustvari su super. Javit ću se, zahvaljujem na velikom trudu i ............... dosadna sam sa silnim zahvaljivanjem ali i jako sretna što vi postojite. Javit ću se
Hvala puno
Pozdrav
[ Shadowed @ 04.12.2006. 15:53 ] @
Sudarice, vidim da cesto imas potrebe da pravis makroe sto vec spada u programiranje a na osnovu potreba koje ti se javljaju, deluje mi da bi ti dobro dosla aplikacija specijalizovana za tvoj posao.
Razmisli o ucenju programiranja u nekom programskom jeziku kao sto je VB.NET ili cak VB6 (ovi makroi i koriste VB sintaksu). Iz njih mozes pristupati Excel-ovom objektnom modelu a mozes postici vise nego makroima.
[ Sudarica @ 05.12.2006. 07:39 ] @
Evo pripremila sam sve napravila makro za prvi dio znači sve do trećeg koraka i sada sam unjela Vaš makro kao poseban model. Međutim javlja mi se greška na
Set wbk = Workbooks.Open (filename:= ActiveWorkbook.Path & "\SlanjeEmpty.XLS", ReadOnly:=True)
Set shSlanje = wbk.Sheets(1)
Ja sam otvorilla Datoteku Spisak 10 i tu pospremila radnu knjigu kao predložak koju sam nazvala Predložak.xls Znači put je C:\Spiskovi\Spisak 10\Predložak.xls i tako sam izmjenila u Vašem makrou ali javlja mi grešku. Neznam šta znači ReadOnly:(ne direktni prjevod nego funkciju dali je to nekakovo posebno otvaranje spiska ili je to ono standardno File-open. Moram ići korak po korak jer je za mene ovaj makro kao mjesec i ja pred njim a ne znam kako da ga molim za pomoć.
[ Jpeca @ 05.12.2006. 08:53 ] @
Ajde, napiši kako tačno izgelda kod u tvojem slučaju. U priloženoj radnoj sveci uz moju prethodnu poruku imaš kod koji je testiran i radi. Dakle greška je verovatno kod nekih naknadnih izmena tog koda - nova putanja koju si stavila ? Ako si stavilia kompletnu putanju: "C:\...", pretpostavljam da si izbacila ActiveWorkbook.Path - jer je to putanja do tekuće radne sveske. Da li javlja grešku u prevođenju ili prilikom izvršavanja? Ne bi bilo loše da zakačiš i Predložak.xls, mada ne bi trebalo da je u tome greška - bar ne prilikom otvaranja.
Za ReadOnly opciju već sam naveo da služi da otvorimo fajl koji ne želimo da menjamo - original predložak treba da ti ostane uvek prazan, a popunjeni predložak ćeš snimiti pod drugim imenom.
[Ovu poruku je menjao Jpeca dana 05.12.2006. u 10:03 GMT+1]
[ Sudarica @ 05.12.2006. 09:28 ] @
'Otvaranje sablonoa
Set wbk = Workbooks.Open("C:\Spiskovi\Spisak 10\Predložak.xls, ReadOnly:=True")
Set shSlanje = wbk.Sheets(1)
Neznam kako trebam napisati. Ovo je put koji sam mislila da moram upisati. Predložak sam pospremila kao i savaku drugu knjigu nisam kao Templete *.xlt
Izgubla sam se,
[ Jpeca @ 05.12.2006. 09:51 ] @
Read Only je poseban parametar Open metode. Znaci navoda (") se zatvaraju iza naziva radne sveske.
Set shSlanje ... je novi red - nema direktne veze sa otvaranjem - nego jednostavno daje pogodno (opisno) ime za Sheets(1) u radnoj sveci koje se posle koristi u kodu kao zamena za wbk.Sheets(1)
'Otvaranje sablonoa
Set wbk = Workbooks.Open("C:\Spiskovi\Spisak 10\Predložak.xls", ReadOnly:=True)
Set shSlanje = wbk.Sheets(1)
Predložak i ne treba kao xlt nego xls.
[Ovu poruku je menjao Jpeca dana 05.12.2006. u 12:06 GMT+1]
[ Sudarica @ 05.12.2006. 13:58 ] @
Upravo sam sve prilagodila original spisku. I radi sve savršeno. Hvala na podrški i svaka čast na znanju, jer ja sam skoro odustala. Posao je završen i to savršeno. Kako ću se ja odužiti za ovu veliku pomoć?
Velika Hvala
Pozdrav
[ Sudarica @ 05.12.2006. 14:27 ] @
Citat: Shadowed: Sudarice, vidim da cesto imas potrebe da pravis makroe sto vec spada u programiranje a na osnovu potreba koje ti se javljaju, deluje mi da bi ti dobro dosla aplikacija specijalizovana za tvoj posao.
Razmisli o ucenju programiranja u nekom programskom jeziku kao sto je VB.NET ili cak VB6 (ovi makroi i koriste VB sintaksu). Iz njih mozes pristupati Excel-ovom objektnom modelu a mozes postici vise nego makroima.
Rado bi ja to učila ali ja ne znam engleski i zato mi je teško: Makar su mi makro naredbe bile kao div i mravac, ali sada točno znam gdje moram šta ispraviti. Nikad se nezna. Ali možda da krenem korak po korak i da imate živaca za mene kao gospodin "JPeca" možda bi i bilo našto od mene.
Pozdrav.
[ Jpeca @ 05.12.2006. 14:27 ] @
Citat: Kako ću se ja odužiti za ovu veliku pomoć?
Kad naiđeš na neko pitanje na formu koje znaš (pa makar bilo i iz makroa) , a ti odgovori.
Lepo je čuti da sam nekom pomogao, ali ti u tome preteruješ (i sama si to zapazila jednom prilikom). Forumi i služe da se međusobno pomažemo, koliko ko može.
[ Sudarica @ 05.12.2006. 14:39 ] @
Svejedno neka pretjerujem ali ja sam sretna što sam našla ovaj forum i što ste mi odgovorili na svako moje postavljeno pitanje i još više da sam ja sve shvatila.
Recite šta god hoćete ali Vi ste zakon. (Šala mala) Još ću se ja javiti, bez brige.
Pozdrav
[ Sudarica @ 07.09.2008. 06:53 ] @
Htjela bi da mi radna knjiga bude pospremljena točno u određenu mapu, a ako nema te mape da otvori novu i pospremi radnu knjigu.
sFileName = "C:\Papir\Račun\Nalozi\" & prim & "-" & shPodaci.Cells(stopRow, 2).Text & ".xls"
wbk.SaveAs sFileName
wbk.Close
- mapa "Nalozi" ,sada se tako zove a trebala bi se zvati " & prim & " (isto kao prvi dio naziva radne knjige). Ako postoji mapa " & prim & " pospremi ju, a ako ne otvori novu i pospremi " & prim & "-" & shPodaci.Cells(stopRow, 2).Text & ".xls"
hvala
pozdrav
[ Sudarica @ 09.09.2008. 15:38 ] @
hvala rješila sam
[ Ivek33 @ 09.09.2008. 17:02 ] @
drago mi je da si riješila, možeš li postati rješenje da i drugi vide kako ?
Citat: Jpeca: Kad naiđeš na neko pitanje na formu koje znaš (pa makar bilo i iz makroa) , a ti odgovori. .............................Forumi i služe da se međusobno pomažemo, koliko ko može. pozdrav
[ Catch 22 @ 10.09.2008. 02:06 ] @
Možda bi trebalo brisati ovakve teme u kojima se postavi pitanje, pa potom napiše "hvala rešio / la sam" bez opisa rešenja. Takvih tema ima poprilično na forumu, a nekim autorima tema je to izgleda i manir... ili jeftina zabava(?!?)

[ Ivek33 @ 10.09.2008. 07:18 ] @
Citat: Catch 22: Možda bi trebalo brisati ovakve teme u kojima se postavi pitanje, pa potom napiše "hvala rešio / la sam" bez opisa rešenja. Takvih Iskreno rečeno i ja sam "alergičan" kada netko postavi pitanje sa problemom ( traži pomoć od drugih ) potom riješi problem a ne želi ga podjeliti sa drugima. ( nije to slučaj smo u ovoj temi ima ih još ).
Neki dolaze na forum samo po pomoć, mada imaju određena znanja ali ne bi pomogli drugima :-(
Nekoliko puta sam već reagirao ovako kao i u prethodnom postu međutim rijetki su se odazvali. No to je njihovo pravo i volja.
Nisam za brisanje teme jer ipak se netko može javiit sa nekim rješenjem pa pomoći drugim čitaocima koji imaju isti problem, a pogotovo kada se post nadoveže u temi koja već ima neko pitanje i rješenje. ( malo off-topic ali dobro je da drugi uoče problem
[ Sudarica @ 16.10.2008. 20:52 ] @
Oprostite
sada sam otvorila ovu stranicu i ispričavam se što nisam napisala kako sam to napravila. Smatram da to nije nešto.
Jednostavno sam otvorila Mapu i u mapi sve datoteke koje imaju identičan naziv kao korisnici u spisku i u naredbu sam unjela put i tako rješila svoj problem. Svaki novi korisnik koji se pojavi otvorim ga u mapi i onda u njega pospremam pomoću naredbe podatke iz spiska.
code
sFileName = "C:\Papir\Račun\" & prim & "\" & prim & "-" & shPodaci.Cells(stopRow, 6).Text & ".xls"
wbk.SaveAs sFileName
wbk.Close
Još jednom moja velika isprika. Vaša reakcija je u redu, ali stvarno mislim da nisam napravila ništa što već ne piše u ovim objašnjenjima.
[ Sudarica @ 24.03.2009. 15:50 ] @
Ne radi mi dobro ovaj makro za pospremanje u Excelu 2007. Pospremi mi radnu knjigu kao xlsx a treba xlsm odnosno mora biti makro naredba pospremljena zajedno sa radnom knjigom kako bi kod sledećeg ispravka radnu knjigu mogla ponovno pospremiti pomoću makro naredbe.
Sub Spremi()
Dim NazivKnjige As String
NazivKnjige = "c:\Papir\Račun\Nalozi\" & Trim(ActiveSheet.Range("C4").Text) & "_" & Trim(ActiveSheet.Range("G4").Text)
ActiveWorkbook.SaveAs NazivKnjige
ActiveWorkbook.Close
End Sub
Hvala na pomoći
[ Jpeca @ 24.03.2009. 19:15 ] @
SaveAs metoda ima dodatne opcije, a jedna od njih je FileFormat. U tvom slučaju treba da je
FileFormat:= xlOpenXMLWorkbookMacroEnabled
Dakle dopuni liniju Activeworkbook.SaveAs:
Code: ActiveWorkbook.SaveAs NazivKnjige, FileFormat:= xlOpenXMLWorkbookMacroEnabled
[ Sudarica @ 25.03.2009. 19:47 ] @
Hvala
sada radi dobro
[ Sudarica @ 03.07.2011. 08:04 ] @
Molim pomoć
imam slijedeći Code (dolje)
1/ Izbor primatelja
Code:
Prim = Application.InputBox( prompt:="Selektuj naziv primatelja" )
ja selektiram jednog po jednog primatelja, a taj primatelj je uvijek u koloni A ćelija iznad totala naprimjer
Gene osig
Gene osig Total
Gra Mag
Gra Mag
Gra Mag
Gra Mag Total
znači Prim = Gen osig
ili Prim= Gra Mag
trebala bi dodatak naredbi, da pozove Application.InputBox( prompt:="Selektuj naziv primatelja" )
da pronađe i selektira ćeliju, prvu iznad Totala i klikne OK i da nastavi dalje prema naredbi kako slijedi. Gotovo je kada više nema vrijednosti ispod Totala u koloni A . (To ja sada radim ručno)
Hvala
Pozdrav
[Ovu poruku je menjao Sudarica dana 03.07.2011. u 12:55 GMT+1]
[Ovu poruku je menjao Sudarica dana 03.07.2011. u 13:05 GMT+1]
[ Jpeca @ 05.07.2011. 12:02 ] @
InputBox se koristi u slučaju kad ti treba korisnik da nešto unese. U slučaju kad preuzimaš podatke iz neke ćelije koristiš jednostavno prdruživanje
Npr.
Prim = Range("A5").Text
Pošto ti želiš da postupak automatizuješ sve ovo treba da se dešava unutar petlje koja bi pronalazila natpis Total i onda preuzimala naziv primatelja iz ćelije iznad
Ovo se može rešiti koristeći Find funkciju u petlji
Code: Sub Test()
' Primer pozivanja Find u petlji
' za elitesecurity.org
' P. Jovanovic 5/7/2011
'
Dim sh As Worksheet
Dim clTotal As Range
Dim FirstAddr As String
Dim Prim As String
Set sh = ActiveSheet
Set clTotal = sh.Columns(1).Find( _
What:="Total", _
LookIn:=xlValues, _
LookAt:=xlPart _
) 'Trazi se prvi Total u prvoj koloni
FirstAddr = clTotal.Address
Do Until clTotal Is Nothing
Prim = clTotal.Offset(-1, 0).Text ' Preuzima se naziv primatelja iz celije iznad Total
'
' Postojeca obrada
'
Set clTotal = sh.Columns(1).FindNext(after:=clTotal) 'Sledeci total
If clTotal.Address = FirstAddr Then ' Izlaz kad je ponovo nadjen prvi total
Exit Do
End If
Loop
End Sub
[ Sudarica @ 05.07.2011. 16:28 ] @
Hvala upravo sam to htjela
ali prvog napravi dobro a dalje se vraća na Iznos=...... u codu ili prenese podatke na predložak ali ih ne zbroji već ih tako pospermi.
još jedna molba
Primatelj može imati isti naziv ali mu se razlikuje žiro račun (kolona 2) dali bi bio veliki problem i to ispitivanje. Ja sada sve to pretražujem i ako imam duplog primatelja, a različiti žiro račun dodajem točku jer mi inače uzima podatke od prvog primatelja sa istim nazivom. Naziv datoteke sadrži primatelja i žiro račun.
Hvala
Srdačan pozdrav
[ Jpeca @ 06.07.2011. 08:22 ] @
Problem je što unutar tvoje obrade već postoji Find. Ovaj Find postavi nove kriterijume pretrage, tako da sledeći Find Next ne traži više "Total".
Prepravio sam tvoj kod tako da se ne poziva Find u obradi nego se koriste brojevi redova (startRow, StopRow) određeni na osnovu nadjenih Total-a u prvoj koloni
Za prvi pronađeni Total startRow = 9 a stopRow = "Total row" - 1.
Za sledeći Total startRow je prethodni stopRow + 2 (da se preskoči red Total) a stopRow opet "Total row" - 1.
Pošto se u ovom slučaju traže Total redovi, onoliko koliko ih ima biće i napravljeno fajlova. Odnosno, nema veze da li je naziv primaoca isti ako imaš dva totala biće napravljene dve datoteke. Jedino što nazivi datoteka ne smeju biti isti - pa u slučaju istog naziva primaoca moraju da im se razlikuju žiro računi.
[ Sudarica @ 06.07.2011. 16:13 ] @
Hvala puno
sada ću testirati naredbu pa ću se javiti
hvala još jednom i pozdrav
[ Sudarica @ 07.07.2011. 20:25 ] @
Naredba radi dobro upravo onako kako treba, bez ijedne izmejne
htjela bi u ovu naredbu
Dim iRow
Sub ListPathNameFiles()
iRow = 5
Call ListMyFiles(Range("B1"), Range("B2"))
End Sub
Sub ListMyFiles(mySourcePath, IncludeSubfolders) '(moj izvorni put, Uključi podmape)
Set MyObject = New Scripting.FileSystemObject
Set mySource = MyObject.GetFolder(mySourcePath) '
On Error Resume Next
For Each myFile In mySource.Files
iCol = 1
Cells(iRow, iCol).Value = myFile.Path
iCol = iCol + 1
Cells(iRow, iCol).Value = myFile.Name
iRow = iRow + 1
Next
If IncludeSubfolders Then
For Each mySubFolder In mySource.SubFolders
Call ListMyFiles(mySubFolder.Path, True)
Next
End If
End Sub
dodati da mi iz file "Ita" za sve primatelja koje sam prepisala u stupac C "Kontrole primatelja" upiše iznos iz svakog primatelja, a iznos se nalazi uvijek u ćeliji D15 primatelja. To bi bila kontrola da su svi primatelji dobro i točno prepisani.
Hvala
Pozdrav
[ Jpeca @ 08.07.2011. 09:55 ] @
Na stranici John Walkenbach... http://j-walk.com/ss/excel/tips/tip82.htm naći ćeš interesantnu funkciju koja čita vrednost neke ćelije radne sveske, bez njenog otvaranja.
Code: Private Function GetValue(path, file, sheet, ref)
' Retrieves a value from a closed workbook
Dim arg As String
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Ovu funkciju uključi u tvoj kod i onda je pozivaš u petlji sa parametrima mySourcePath, myFile.File, "Sheet1" i "D15" i pomoću nje popunjavaš treću kolonu. Dakle pre iRow = iRow +1 dodaj
Code:
iCol = iCol + 1
Cells(iRow, iCol).Value = GetValue(mySourcePath, myFile.Name, "Sheet1", "D15")
Na temu referenciranja ćelije iz druge radne sveske možeš pogledati i ovde http://www.elitesecurity.org/t405615-0#2657667
[Ovu poruku je menjao Jpeca dana 08.07.2011. u 11:35 GMT+1]
[ Sudarica @ 16.07.2011. 07:22 ] @
Da to je to radi super
Hvala puno
Nisam se mogla ulogirati ali sada sam skužila daje problem u mom kompjuteru jer dok pokušam s drugog kompjutera mogu bez problema. A sada sam ponovno na mom kompjuteru i sada mogu.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|