prenos podatkov in štetje

Pomoč pri delu z MS Excelom
Odgovori
miha1
Prispevkov: 20
Pridružen: Sr Avg 10, 2005 5:07 pm

prenos podatkov in štetje

Odgovor Napisal/-a miha1 »

pozdravljeni :)

v mapi imam veliko tekstovnih podatkov(računi1.txt,računi2.txt,...,..) z veliko podatki.te podatke sedaj kopiram v excel in preračunam.to seveda počnem ročno,kar je precej mučno.zanima me sledeče:ali lahko z makrom dosežem,da te datoteke,ki sem jih označil nekako odprem naenkrat in prekopiram eno za drugim v excel,se pravi na en list?vrstni red ni pomemben,vazno je le ,da se vse označene datoteke s podatki prekopirajo ena za drugo na en list v excel.
za rešitev se najlepše zahvaljujem.
lp miha1
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Mogoče vam bo pomagal kar makro, ki ga je napisal Saša v starem forumu, dosegljivem na http://www.matjazev.net/pnew/index.php? ... ev_net.chm.
Makro vam bo odprl okno, kjer lahko izberete poljubno mnogo tekstovnih datotek, ki vam jih bo makro prepisal v trenutno izbrano datoteko kot nove liste. Za vsako izbrano datoteko bo toej dodal nov list.

Poglejte in povejte če je OK. Če je stvar pribljižno takšna kot ste si jo zamislili, pa vam bom v nadaljevanju tematike makro popravil tako, da podatkov ne bo tlačil v nove liste temveč vse na en sam list.

Koda: Izberi vse

' saša na www.matjazev.net
' 12.03.2003
Sub odpri()
Application.ScreenUpdating = False
Dim PotDoDatotek As Variant
Dim ImeNoveDatoteke As String
Dim i As Byte
PotDoDatotek = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(PotDoDatotek) = True Then
    Workbooks.Add
    ImeNoveDatoteke = ActiveWorkbook.Name
    For i = LBound(PotDoDatotek) To UBound(PotDoDatotek)
        Workbooks.OpenText Filename:=PotDoDatotek(i), _
                           Origin:=xlWindows, _
                           StartRow:=1, _
                           DataType:=xlDelimited, _
                           TextQualifier:= _
                           xlDoubleQuote, _
                           ConsecutiveDelimiter:=True, _
                           Tab:=True, _
                           Semicolon:=False, _
                           Comma:=False, _
                           Space:=True, _
                           Other:=False, _
                           FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))
        ActiveWorkbook.Sheets(1).Move Before:=Workbooks(ImeNoveDatoteke).Sheets(1)
    Next i
End If
End Sub
lp,
Matjaž Prtenjak
Administrator
miha1
Prispevkov: 20
Pridružen: Sr Avg 10, 2005 5:07 pm

Odgovor Napisal/-a miha1 »

pozdravljen Matjaž
najprej hvala.
vidim da ste razumeli moje vprašanje,zadevo sem tudi že preizkusil.
mislim,da sva na liniji.
težavo mi povzroča,ker se te datoteke odprejo v novem delovnem zvezku
in ne v aktivnem.bi se lahko to spremenilo?
in kot ste omenil,zelo rad bi podatke spravil na en list(zaradi štetja),sicer se bom "zgubil".drugače pa makro deluje ok.(odpiral bom tudi do 20 datotek naenkrat,ali celo več).
zelo vam bom hvaležen,če rešiva še ta dva problema.
za odgovor se zahvaljujem.
lp miha1
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Se oproščam za zares veliko zamudo, a strežnik pač ni bil dosegljiv :(, o čemer si lahko več preberete na spletišču.

Kar pa se tiče vaših vprašanj, pa je prvi problem preprosto rešljiv. Da se stvar ne bo odpirala v novem delovnem zvezku samo izbrišite vrstico:

Koda: Izberi vse

    Workbooks.Add 
To je to. Kar pa se tiče prepisa vseh podatkov na en list pa vam spodaj prilagam makro, ki vam bo v poljubnem delovnem zvezku dodal nov delovni list in nanj prepisal podatke iz vseh preostalih delovnih zvezkov.

Koda: Izberi vse

' www.matjazev.net
' 26.01.2006
Sub PrekopirajListe()
    Dim NovList As Worksheet
    
    Set NovList = Worksheets.Add
    
    Dim list As Worksheet
    For Each list In Worksheets
        If (list.Name <> NovList.Name) Then
            list.Select
            list.UsedRange.Copy
            NovList.Select
            
            If (NovList.UsedRange Is Nothing) Then
                NovList.Cells(1, 1).Select
            Else
                NovList.Cells(NovList.UsedRange.Rows.Count + 1, 1).Select
            End If
            ActiveSheet.Paste
        End If
    Next
    
    NovList.Range("a1").Select
End Sub
lp,
Matjaž Prtenjak
Administrator
miha1
Prispevkov: 20
Pridružen: Sr Avg 10, 2005 5:07 pm

Odgovor Napisal/-a miha1 »

pozdravljen Matjaž

me veseli da smo zopet v foromu in da stvar deluje po starem, resnično
mi je žal,da se je to pripetilo.pa vendar....

zahvaljujem se vam za kodo,želel bi še malo "korektur"

torej takole:izberem datoteke(txt),katere naj se odprejo in se nato ena za drugo prekopirajo na en list in potem se te iste datoteke ponovno zaprejo brez shranjevanja(saj jih ne rabim več v zvezku).
v vašem primeru se mi prekopirajo tudi tisti listi ki so že sicer v zvezku in mi ustvari pravo zbrko).torej ostane naj samo en list na
katerem so se prekopirali podatki in pa seveda že obstoječi,ostali se zaprejo.mislim,da me razumete.

zahvaljujem se vam za pomoč.
lp miha1
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Na žalost makrov po naročilu ne morem pisati. Preprosto se ne izide, ker bi potem lahko počel samo to. V tej tematiki sem vaš problem rešil povsem zadovoljivo, le malce se še morate potruditi. S prvim makrom lahko lepo v NOV delovni zvezek uvozite VSE datoteke ter nato izvedete drug makro, ki vam vse podatke prepiše na EN list in nato samo še ta list prekopirate v vaš DZ in to je to. Trije preprosti in hitri koraki.

Če prvi in drugi makro združite v enega pa vam ostaneta samo še dva koraka.
lp,
Matjaž Prtenjak
Administrator
Odgovori