excel shrani kot za cel kup datotek
Imam cel kup datotek, ki jih odpiram v excelu samo niso xls datoteke (so xyz oz. nekaj takega kot txt). So takšne datoteke, da je treba nastaviti kako naj stolpce odpre (saj veste tisti postopek, ko moraš par stvari potrditi in nato se odpre datoteka). Vse te datoteke moram potem shraniti v xls ali pa v dbf obliko. Sem poskusila s programom Rename in vsem spremenila končnico v dbf. Potem se sicer vse datoteke lepo odprejo, ampak naredi le en stolpec namesto treh. V vsaki vrstici so namreč tri številke in vsaka bi morala biti v svojem stolpcu pa ni.
Rada bi vse datoteke na čimbolj enostaven in hiter način odprla in potem s shrani kot spremenila v pravo obliko. Datotek imam pa cca. 200 v približno 8 mapah.
Sem nekaj ustvarjala z makri pa mi ne uspe.
kakšen pa je format teh datotek, oz. podatkov v datotekah.
Če odpreš datoteko z npr. beležnico – kako so noter napisane številke
in kakšna ločila so vmes, fino bi bilo da kakšno datoteko kar prekopiraš
semkaj – seveda če ni kaj spornega, drugače pa napiši dobeseden primer..
z samim preimenovanjem datotek pa nisi naredila nič, ker si preimenovala
samo končnico – ne pa tudi zgradbe dokumenta 🙂
Tole je del datoteke odprt v beležnici. Drugače je v vsaki datoteki cca. 45.000 vrstic. Želim pa imeti tabelo s tremi stolpci (v tem primeru je prva vrstica: 536000; 94000; 204,6). Poleg tega pa bi rada nad prvo vrstico številk vrnila še eno vrstico – naslovno vrstico z naslovi stolpcev (zdaj naslovne vrstice ni). Pa ugotovila sem, da imam teh datotek cca. 300.
536000.0 94000.0 204.60
536012.5 94000.0 198.43
536025.0 94000.0 189.94
536037.5 94000.0 189.47
536050.0 94000.0 192.08
536062.5 94000.0 195.28
536075.0 94000.0 198.00
536087.5 94000.0 199.64
536100.0 94000.0 199.32
536112.5 94000.0 197.15
536125.0 94000.0 194.13
536137.5 94000.0 190.59
536150.0 94000.0 186.32
536162.5 94000.0 183.93
536175.0 94000.0 182.45
536187.5 94000.0 183.77
536200.0 94000.0 185.76
536212.5 94000.0 187.06
536225.0 94000.0 187.21
536237.5 94000.0 187.56
536250.0 94000.0 189.54
536262.5 94000.0 195.23
536275.0 94000.0 203.05
536287.5 94000.0 210.93
536300.0 94000.0 220.38
536312.5 94000.0 228.99
536325.0 94000.0 235.08
536337.5 94000.0 236.33
536350.0 94000.0 235.04
536362.5 94000.0 234.17
536375.0 94000.0 235.00
536387.5 94000.0 237.47
536400.0 94000.0 239.72
536412.5 94000.0 241.37
536425.0 94000.0 243.09
536437.5 94000.0 244.51
536450.0 94000.0 243.98
536462.5 94000.0 244.14
536475.0 94000.0 243.91
536487.5 94000.0 243.39
536500.0 94000.0 241.69
Izvoli kodo, glave ni narejene (ta hip nimam časa, ali se pa sama
pozabavaj)
Odpri excel – odpri nov prazen dokument v excelu,
greš na macro – mu daš ime: konvertiraj (sicer pa spodaj spremeni ime)
prilepi spodnjo kodo v celoti..
Popravi pot do datotek, trenutno piše: d:\excel
Vse skupaj zapri, tako da se vrneš v prazen dokument, izberi si:
– orodja – Macro – konvertiraj in
ga z gumbom Zaženi – zaženeš.
Program do delal kar dolgo časa (odvisno od števila datotek).
Še nasvet – NE poizkušaj tega direktno na produkcijskih datotekah,
temveč si ustvari nekje kopijo, pa tam pretestiraj, namreč
Klemenxx NE odgovarja za nič – tudi če ti disk formatira, ali pa
se poliješ z vročo kavo/kakavom in podobne neumnosti, niti ne
odgovarjam, če bo danes 38 stopinj v Ljubljani :)))
Macro ti bo prekonvertiral datoteke samo v trenutni mapi, torej
za podmapo, boš morala popraviti pot (d:\excel piše sedaj).
pa lep dan 🙂
Option Explicit
Sub konvertiraj()
Dim myFiles() As String
Dim fCtr As Long
Dim myFile As String
Dim myPath As String
Dim tempWkbk As Workbook
Dim xlsFileName As String
‘Vpiši pravilno pot do .txt datotek, sedaj piše d:\excel
myPath = “d:\excel”
If Right(myPath, 1) “\” Then
myPath = myPath & “\”
End If
‘makro išče datoteke, ki imajo končnico .txt, sicer pa popravi
myFile = Dir(myPath & “*.txt”)
If myFile = “” Then
MsgBox “Ne najdem .txt datotek”
Exit Sub
End If
Application.ScreenUpdating = False
‘Spisek datotek za zamenjavo
fCtr = 0
Do While myFile “”
fCtr = fCtr + 1
ReDim Preserve myFiles(1 To fCtr)
myFiles(fCtr) = myFile
myFile = Dir()
Loop
If fCtr > 0 Then
For fCtr = LBound(myFiles) To UBound(myFiles)
Application.StatusBar = “Spreminjam v excel: ” & myFiles(fCtr)
Workbooks.OpenText Filename:=myPath & myFiles(fCtr), _
Origin:=437, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=True, Space:=True, _
Other:=False, FieldInfo:=Array(1, 1)
Set tempWkbk = ActiveWorkbook
xlsFileName = myPath & myFiles(fCtr)
xlsFileName = Left(xlsFileName, Len(xlsFileName) – 4) & “.xls”
tempWkbk.SaveAs Filename:=xlsFileName, FileFormat:=xlWorkbookNormal
tempWkbk.Close savechanges:=False
Next fCtr
End If
With Application
.ScreenUpdating = True
.StatusBar = False
End With
End Sub
madonca sem pozabljiv,
še pomembno:
– preden startaš program OBVEZNO ZAPRI VSE ostale programe, ker
je spominsko kar požrešen – seveda ker so velike .txt datoteke
program tudi naredi velike .xls datoteke, zato pa rabi veliko spomina.
Super, deluje. Najlepša hvala. Veš koliko časa si mi prihranil? Tale makro si bom pa sigurno shranila. sem prepričana, da mi bo še prav prišla.
Naslovno vrstico pa bo že nekak šlo.
Pa še nekaj me zanima: če imam recimo odprtih 20 zvezkov, kako lahko vse naenkrat shranim? Ali pa recimo vsem naenkrat vrinem kako vrstico? Vem, da je neka kombinacija tipk, da lahko vse označiš pa ne vem katera.
Pa še nekaj me zanima: če imam recimo odprtih 20 zvezkov, kako lahko vse naenkrat shranim?
pojma nimam – običajno zaprem excel, pa mi vse skupaj shrani, oz. sprašuje
za ime datoteke..
Ali pa recimo vsem naenkrat vrinem kako vrstico?
to ti sicer znam napisati macro, ne vem pa za kombinacije tipk …
mogoče bo kdo drugi to vedel …
Forum je zaprt za komentiranje.