[ civi @ 16.07.2012. 13:00 ] @
Pozdrav svim,

imam problem koji ne znam da rešim i potrebna mi je pomoć, problem se sastoji iz sledećeg:

Imam više tabela koje je potrebno spojiti u jednu (sve tabele imaju iste nazivne kolone ali se broj redova u njim menja). Tako dobijenu jednu tabelu opet radim copy-paste u moju master tabelu i preko pivota dobijam tabelu za štampu koja je meni potrebna.
E, sad da li je moguće da se napravi preko VBA neki makro koji će primera radi da iz svih tabela određenog foldera prebaciti podatke u jednu (master) tabelu tj. da ja prosto samo sačuvam tabele dobijene mailom u odredjeni folder, otvorim moju master tabelu prosto kliknem na dugmence (Button), i u sheetu koji ima pivot dobijem odmah sve podatke spremne za štampu.
Još jedna mana je što kod dobijenih tabela treba obrisati prvih 3-4 reda i poslednji gde je zbir kako bi ostali samo podaci mada ako je ovo problem mogu da kad radim save odmah obrišem nepotrebne redove.
Na nekim forumim sam uspeo da nadjem nešo slično ali kod mene to nefunkcioniše jer tabele koje dobijam imaju promenjiv broj redova.

Ako nešto nisam napisao pitajte jer ne znam da pišem u VBA pa neisam siguran da li sam lepo opisao problem i da li sam dao dovoljno podataka.

Hvala.
[ 3okc @ 16.07.2012. 13:56 ] @
Ključna reč je konsolidacija, što je ime Excelovog alata za objedinjavanje tabela iz više izvora.

Trebalo bi da je nešto od ovoga:
Merge data from multiple worksheets
Consolidate multiple worksheets into one PivotTable report

Takođe, pogledaj starije teme sa foruma: Spajanje dve tabele u jednu, Sabiranje iz promenljivog broja radnih listova, problem sa vise tabela
[ civi @ 16.07.2012. 14:21 ] @
Hvala na brzom odgovoru,

Opcija mi ne odgovara jer se odnosi na odredjeni broj redova, a kao što sam već napisao imam promenjivi broj redova. Najbliže rešenje (rekao bih) je iz ove teme

Međutim kao što sam i napisao ne znam da programiram u VBA i ne znam prepraviti ovaj kod za moje potrebe pa ako neko zna da mi pomogne.

[Edit: tagovi]
deo iz Pravilnika za korisnike:
5.Ne šarenite poruke
7.Ne citirajte bez potrebe
koristite umerene [ quote ] tagove kako biste dali ostalima do znanja
na koji deo teksta se vaš odgovor odnosi, ali NIKAKO nemojte dozvoliti
da citat predstavlja veći deo poruke koju pišete.


[Ovu poruku je menjao 3okc dana 16.07.2012. u 19:40 GMT+1]
[ elektroing @ 16.07.2012. 21:36 ] @
To bi mozda mogao da odradis linkovanjem celija (=[Book1.xls]Sheet1!$A1).
[ civi @ 17.07.2012. 08:29 ] @
Linkovanje tabela rešava problem ukoliko su tabele sačuvane uvek pod istim imenom i nazivi sheet-ova su uvek isti u suprotnom linkovi "pucaju", ovo sam već probao ali nisam dobio željeni rezultat. Takodje postoji problem ukoliko ima različiti broj tabela za unos te sam i dalje mišljenja da je VBA jedino pravo rešenje koje bi bez obzira na broj tabela mogao da adekvatno popuni master.
Već sam pogledao razna rešenja medjutim problem je nepoznavanje pisanja koda ali ono što znam je da je to za nekoga boza da napiše što bi se reklo u tri reda.
[ elektroing @ 17.07.2012. 11:01 ] @
Obaj kod bi mogao da posluzi, u neku ruku radi posao. Neko ko se bolje razumije u VBA mogao bi da doradi kod.

Code:

Sub copy_files()
    Dim FSO As Object, Folder As Object, file As Object
    Dim copyFrom As Workbook
    Dim wksCopyTo As Worksheet, wksCopyFrom As Worksheet
    Dim rngCopyTo As Range, rngCopyFrom As Range
    Set wksCopyTo = ThisWorkbook.Sheets(1)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = FSO.GetFolder("C:\temp")
    For Each file In Folder.Files
        If LCase(Right(file.Name, 4)) = ".xls Then
            Set copyFrom = Workbooks.Open("C:\temp\" & file.Name)
            Set wksCopyFrom = copyFrom.Sheets(1)
            Set rngCopyFrom = wksCopyFrom.Range("a1")
            Set rngCopyFrom = wksCopyFrom.Range(rngCopyFrom, _
                rngCopyFrom.SpecialCells(xlCellTypeLastCell))
            Set rngCopyTo = wksCopyTo.Range("a1").SpecialCells(xlCellTypeLastCell)
            If rngCopyTo.Address <> wksCopyTo.Range("a1").Address Then
                Set rngCopyTo = wksCopyTo.Cells(rngCopyTo.Row + 1, 1)
            End If
            rngCopyFrom.Copy
            wksCopyTo.Paste rngCopyTo
            Application.CutCopyMode = False
            copyFrom.Close False
        End If
    Next file
 End Sub
[ civi @ 17.07.2012. 11:33 ] @
Hm,

promenio sam putanju i kad pokrenem makro apsolutno se ništa ne dešava

:-(
[ elektroing @ 17.07.2012. 12:06 ] @
evo primjer koj iradi
[ civi @ 17.07.2012. 13:56 ] @
1. Mislim da je to to što meni treba, ali (kad ne bi bilo ali ne bi bilo to to) kad pokrenem button sheet jedan se automatski popuni samo sa podacima iz jedne tj prve tabele, koliko mogu da zapazim radi copy-paste iz svih tabela ali na kraju ostanu podaci samo iz prve tabele.

2. Kad recim hocu da uradim refresh izbaci grešku kod citanja tabele 3 i trazi debug u koloni:

wksCopyTo.Paste rngCopyTo


Gde sada gresim???
[ elektroing @ 17.07.2012. 14:44 ] @
Sto se tice kopiranja lista to je definisano u liniji
Set wksCopyFrom = copyFrom.Sheets(1)

ako stavis Sheets(2) onda ce kopirati list 2.


Neznam kako prepraviti da stampa svaki list, neko ko se bolje razumije u VBA bi trebalo da prilagodi kod.
Ovaj kod sam pronasao na net tako da ne znam bas kako funkcionise.

Mozda da postavis pitanje u podforum VBA?
[ FOX028 @ 24.07.2012. 14:07 ] @
Evo odradio sam ti ovo kopiranje podataka iz drugih Excel fajlova u glavnu Excel knjigu, u prilogu je primer.
Prvo je potrebno odraditi pripremu (kliknuti na dugme Priprema) koja kreira spisak svih xls fajlova koji se nalaze u istom folderu gde se nalazi i ova MasterTabela. Zatim kliknuti na dugme Kopiraj. Moze se ovo i spojiti u jednom kodu ako je potrebno.