Podatki iz txt datoteke

Pomoč pri izdelavi makrov
Odgovori
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Podatki iz txt datoteke

Odgovor Napisal/-a Stenly »

Pozdravljeni

Ne vem kako bi pobral del podatkov iz txt datoteke v excel, za nadaljno obdrlavo :cry: .

V službi imamo mašino za utrujanje materiala. Ta dela nekako v ciklusih. Podatke beleži v txt datoteko nekako tako:

prvi stolpec = čas
drugi stolpec = številka ciklusa
tretji stolpec = pomik 1
četrti stolpec = pomik 2
peti stolpec = sila
šesti stolpec = pomik 3

Težava mi je v tem, da je veliko vrstic (cca 20000 ciklusov po cca 100 vrstic) in da celotne datoteke ne morem uvozit v excel.
Želel pa bi uvoziti (poljubno) vse podatke npr. od 11111-ega ciklusa, pa do 11121 ciklusa.
Prosil bi za kak namig :? .
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Nekaj takšnega, kot je zapisano spodaj:

Koda: Izberi vse

Sub NekajTaksnega(ciklus As String)
  
  Dim prebranaVrstica As String
  Dim vrsticaVExcelu As Long
  Dim razbito
  
  vrsticaVExcelu = 0
  Open "<ime vhodne datoteke>" For Input As #1
  Do While Not EOF(1)
    Line Input #1, prebranaVrstica
    razbito = Split(prebranaVrstica, ";")
    
    If (razbito(1) = ciklus) Then
      Cells(vrsticaVExcelu, 1) = prebranaVrstica
      vrsticaVExcelu = vrsticaVExcelu + 1
    End If
  Loop
  Close #1

End Sub
To je praktično že rešitev. Popraviti je potrebno samo ime datoteke, da bo ustrezala realnemu stanju in pa ustrezno popraviti parameter v funkciji Split.

Funkcija Split namreč razbije vhodni niz na posamezne elemente. Ob tem predpostavlja, da so elementi ločeni z nekim znakom - jaz sem predpostavil podpičje, zato Split(xxxx, ";"). Če so stolpci ločeni z drugim znakom, potem to ustrezno zamenjajte. TO JE VSE.

Kot vidite, vam bo funkcija v aktivni zvezek od vrstice 1 dalje prebrala vse zapise za izbrano ciklus.
lp,
Matjaž Prtenjak
Administrator
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Odgovor Napisal/-a Stenly »

Se zahvaljujem za odgovor.

Se mi je pa zataknilo (pač zaradi mojega neznanja) :oops: .

Kodo sem dopolnil.

Koda: Izberi vse

Sub NekajTaksnega(ciklus As String)
 
  Dim prebranaVrstica As String
  Dim vrsticaVExcelu As Long
  Dim razbito
 
  vrsticaVExcelu = 0
  Open "C:\Test_x\Test.txt" For Input As #1
  Do While Not EOF(1)
    Line Input #1, prebranaVrstica
    razbito = Split(prebranaVrstica, "tab")
   
    If (razbito(1) = "1.000000") Then
      Cells(vrsticaVExcelu, 1) = prebranaVrstica
      vrsticaVExcelu = vrsticaVExcelu + 1
    End If
  Loop
  Close #1

End Sub
Žal pa ne dela. Stolpci so ločeni s tabulatorjem (pa ne vem kako to napisat. Ime ciklusa je 1.000000, pa tudi to ne vem, če sem prav vpisal (v narekovajih). Prosim še za malo pomoči.

LP
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Koda

Koda: Izberi vse

  razbito = Split(prebranaVrstica, "tab") 
vam razbije niz na podnize, ki so ločeni z besedo 'tab' in ne znakom 'tab', ki je en sam znak z kodo 9. Pravilna koda je torej:

Koda: Izberi vse

  razbito = Split(prebranaVrstica, chr(9)) 
Kar pa se tiče ciklusa, ga morate pa natančno napisati. Če je '1000000' potem morate zapisati '1000000' in ne '1.000.000' ali '1.000000'...
lp,
Matjaž Prtenjak
Administrator
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Odgovor Napisal/-a Stenly »

Hvala za namig in pojasnilo :D :D :D .

Lp
Odgovori