gelöst .unv mittels VBA auslesen
Brauseklaus (Level 1) - Jetzt verbinden
07.06.2010, aktualisiert 18.10.2012, 6308 Aufrufe, 6 Kommentare
Hallo,
hat jemand vielleicht Erfahrung mit dem Dateientyp *.unv? Ich will bestimmte Abschnitte aus dieser Datei (diverse Messdaten) in Excel importieren. UNV-Dateien lassen sich mittels Editor öffnen. Wenn ich diese dann als *.txt abspeichere kann ich die neue Datei problemlos mittels VBA auslesen. Leider habe ich hunderte dieser *.unv Dateien und kann nicht jede erst manuell in *.txt umwandeln.
Gibt es eine Möglichkeit *.unv mittels VBA direkt anzusprechen, sprich zu öffnen und dann auszulesen, oder gibt es einen Code sinngemäß wie „öffnen mit Editor“?
Der folgende Code wird zwar vom Debugger akzeptiert, jedoch findet der Rechner beim ausführen kein Ende und ich muss nach Stunden abbrechen.
Grüße Brauseklaus
hat jemand vielleicht Erfahrung mit dem Dateientyp *.unv? Ich will bestimmte Abschnitte aus dieser Datei (diverse Messdaten) in Excel importieren. UNV-Dateien lassen sich mittels Editor öffnen. Wenn ich diese dann als *.txt abspeichere kann ich die neue Datei problemlos mittels VBA auslesen. Leider habe ich hunderte dieser *.unv Dateien und kann nicht jede erst manuell in *.txt umwandeln.
Gibt es eine Möglichkeit *.unv mittels VBA direkt anzusprechen, sprich zu öffnen und dann auszulesen, oder gibt es einen Code sinngemäß wie „öffnen mit Editor“?
Der folgende Code wird zwar vom Debugger akzeptiert, jedoch findet der Rechner beim ausführen kein Ende und ich muss nach Stunden abbrechen.
01.
…
02.
Datei = "Z:\Eigene Dateien\Projekt\Auswertung\inc10.unv"
03.
Von = "WEAR" 'ab Zeile mit diesem Inhalt importieren
04.
Bis = "-1" 'ab Zeile mit diesem Inhalt nicht mehr importieren
05.
Trenn = " " 'Leerzeichen als Trennzeichen zwischen den Feldern
06.
'Trenn = vbTab 'TAB als Trennzeichen zwischen den Feldern
07.
08.
SpNr = 1 'Daten ab Spalte A ...
09.
ZNr = 3 'der Zeile 3 eintragen
10.
11.
12.
Set DateiEin = CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei, 1, 0, -1) 'Textdatei im Unicode-Format öffnen
13.
…
6 Antworten
- LÖSUNG PCFJKG schreibt am 07.06.2010 um 12:07:21 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 15:34:14 Uhr
- LÖSUNG PCFJKG schreibt am 07.06.2010 um 17:18:48 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 18:46:32 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 21:10:11 Uhr
- LÖSUNG Brauseklaus schreibt am 10.06.2010 um 18:41:39 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 21:10:11 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 18:46:32 Uhr
- LÖSUNG PCFJKG schreibt am 07.06.2010 um 17:18:48 Uhr
- LÖSUNG Brauseklaus schreibt am 07.06.2010 um 15:34:14 Uhr
LÖSUNG 07.06.2010 um 12:07 Uhr
Hallo Brauseklaus,
z.B. in Access mit Line Input
Dim Test as string
Open incl10.unv For Input As #1
Line Input #1, Test
close #1
---> den String in Test auswerten wie's beliebt, z.B. mit mid() o.ä
oder eine Schleife bis von incl10.unv alle Zeilen eingelesen wurden und die Auswertung nach jeder Zeile vornehmen.
Gruß
PCFJKG
z.B. in Access mit Line Input
Dim Test as string
Open incl10.unv For Input As #1
Line Input #1, Test
close #1
---> den String in Test auswerten wie's beliebt, z.B. mit mid() o.ä
oder eine Schleife bis von incl10.unv alle Zeilen eingelesen wurden und die Auswertung nach jeder Zeile vornehmen.
Gruß
PCFJKG
LÖSUNG 07.06.2010 um 15:34 Uhr
Hallo PCFJKG,
danke erstmal dafür.
leider habe ich bis jetzt keinerlei Access Erfahrung, aber wenn es nur auf diesem Wege zu machen ist, werde ich mich wohl, in einer ruhigen Minute, damit näher beschäftigen müssen.
Noch eine Frage: Habe mir, mit meinen sehr bescheidenen VBA Kenntnissen, einen vorläufigen Code zum einlesen von .*txt Dokumenten zusammen gebastelt. Die Werte sollen auf einem Tabellenblatt nebeneinander aufgelistet werden. Leider wird nur der 1.Block, sprich NORMALSTRESS importiert.
Kann da vielleicht mal jemand rüberschauen?
Wenn ich
in Zeile 41 und 71 einsetze wird auch die Temperartur eingelesen (2.Teil), der 3. Teil ("WEAR") fehlt weiterhin. Dazu kommt es zum "Laufzeitfehler 1004...Anwendungs- oder objektdefinierter Fehler".
Achja, ich nutze Excel 2003.
Grüße Brauseklaus
danke erstmal dafür.
leider habe ich bis jetzt keinerlei Access Erfahrung, aber wenn es nur auf diesem Wege zu machen ist, werde ich mich wohl, in einer ruhigen Minute, damit näher beschäftigen müssen.
Noch eine Frage: Habe mir, mit meinen sehr bescheidenen VBA Kenntnissen, einen vorläufigen Code zum einlesen von .*txt Dokumenten zusammen gebastelt. Die Werte sollen auf einem Tabellenblatt nebeneinander aufgelistet werden. Leider wird nur der 1.Block, sprich NORMALSTRESS importiert.
Kann da vielleicht mal jemand rüberschauen?
01.
Sub Importieren()
02.
Datei = "\\Fem-k\Projekte\AlDi\UNV-Datein\zwei_symetrien\inc5.txt"
03.
Von = "NORMALSTRESS" 'ab Zeile mit diesem Inhalt importieren
04.
Bis = "FLOWSTRESS" 'ab Zeile mit diesem Inhalt nicht mehr importieren
05.
Trenn = " " 'Leerzeichen als Trennzeichen zwischen den Feldern
06.
'Trenn = vbTab 'TAB als Trennzeichen zwischen den Feldern
07.
08.
SpNr = 1 'Daten ab Spalte A ...
09.
ZNr = 3 'der Zeile 3 eintragen
10.
11.
12.
Set DateiEin = CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei, 1, 0, -1) 'Textdatei im Unicode-Format öffnen
13.
Fertig = False 'Schalter initialisieren
14.
Import = False 'Schalter initialisieren
15.
Do While Not DateiEin.AtEndOfStream And Not Fertig
16.
Satz = DateiEin.ReadLine 'Datensatz aus Datei einlesen
17.
Satz = Replace(Satz, ".", ",")
18.
If Import Then 'Satz ist zu importieren
19.
If InStr(Satz, Bis) = 0 Then 'Ende des Datenbereiches noch nicht erreicht
20.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
21.
ZNr = ZNr + 1 'nächste Tabellenzeile
22.
Else
23.
Fertig = True 'Ende des vorgegebenen Bereiches - keine weiteren Daten einlesen
24.
End If
25.
Else 'bisher wurde nicht importiert - ...
26.
If InStr(Satz, Von) > 0 Then '... beginnt hier der Datenbereich?
27.
Import = True 'ja; ab jetzt Zeilen importieren
28.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
29.
ZNr = ZNr + 1 'nächste Tabellenzeile
30.
End If
31.
End If
32.
Loop
33.
34.
Von = "TEMPERATURE" 'ab Zeile mit diesem Inhalt importieren
35.
Bis = "PREV_PRESS" 'ab Zeile mit diesem Inhalt nicht mehr importieren
36.
Trenn = " " 'Leerzeichen als Trennzeichen zwischen den Feldern
37.
'Trenn = vbTab 'TAB als Trennzeichen zwischen den Feldern
38.
39.
SpNr = 8 'Daten ab Spalte H ...
40.
ZNr = 3 'der Zeile 3 eintragen
41.
42.
Fertig = False 'Schalter initialisieren
43.
Import = False 'Schalter initialisieren
44.
Do While Not DateiEin.AtEndOfStream And Not Fertig
45.
Satz = DateiEin.ReadLine 'Datensatz aus Datei einlesen
46.
Satz = Replace(Satz, ".", ",")
47.
If Import Then 'Satz ist zu importieren
48.
If InStr(Satz, Bis) = 0 Then 'Ende des Datenbereiches noch nicht erreicht
49.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
50.
ZNr = ZNr + 1 'nächste Tabellenzeile
51.
Else
52.
Fertig = True 'Ende des vorgegebenen Bereiches - keine weiteren Daten einlesen
53.
End If
54.
Else 'bisher wurde nicht importiert - ...
55.
If InStr(Satz, Von) > 0 Then '... beginnt hier der Datenbereich?
56.
Import = True 'ja; ab jetzt Zeilen importieren
57.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
58.
ZNr = ZNr + 1 'nächste Tabellenzeile
59.
End If
60.
End If
61.
Loop
62.
63.
Von = "WEAR" 'ab Zeile mit diesem Inhalt importieren
64.
Bis = "-1" 'ab Zeile mit diesem Inhalt nicht mehr importieren
65.
Trenn = " " 'Leerzeichen als Trennzeichen zwischen den Feldern
66.
'Trenn = vbTab 'TAB als Trennzeichen zwischen den Feldern
67.
68.
SpNr = 12 'Daten ab Spalte L ...
69.
ZNr = 3 'der Zeile 3 eintragen
70.
71.
72.
Fertig = False 'Schalter initialisieren
73.
Import = False 'Schalter initialisieren
74.
Do While Not DateiEin.AtEndOfStream And Not Fertig
75.
Satz = DateiEin.ReadLine 'Datensatz aus Datei einlesen
76.
Satz = Replace(Satz, ".", ",")
77.
If Import Then 'Satz ist zu importieren
78.
If InStr(Satz, Bis) = 0 Then 'Ende des Datenbereiches noch nicht erreicht
79.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
80.
ZNr = ZNr + 1 'nächste Tabellenzeile
81.
Else
82.
Fertig = True 'Ende des vorgegebenen Bereiches - keine weiteren Daten einlesen
83.
End If
84.
Else 'bisher wurde nicht importiert - ...
85.
If InStr(Satz, Von) > 0 Then '... beginnt hier der Datenbereich?
86.
Import = True 'ja; ab jetzt Zeilen importieren
87.
SatzEintragen Satz, ZNr, SpNr 'eingelesenen Satz in Tabellenzeile ZNr ab Spalte SpNr eintragen
88.
ZNr = ZNr + 1 'nächste Tabellenzeile
89.
End If
90.
End If
91.
Loop
92.
DateiEin.Close 'Textdatei schließen
93.
MsgBox "Fertig."
94.
End Sub
95.
96.
Sub SatzEintragen(D, Z, S)
97.
Do While InStr(D, " ") > 0 'solange es noch zwei aufeinanderfolgende Leerzeichen im Satz gibt ...
98.
D = Replace(D, " ", " ") ' ... diese durch ein einzelnes ersetzen
99.
Loop
100.
Felder = Split(D) 'Zeile in Felder zerlegen
101.
Cells(Z, S).Resize(1, UBound(Felder) + 1).Value = Felder 'in der Zeile Z die Spalten ab Spalte S mit den Feldwerten füllen
102.
End Sub
103.
01.
Set DateiEin = CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei, 1, 0, -1)
Achja, ich nutze Excel 2003.
Grüße Brauseklaus
LÖSUNG 07.06.2010 um 17:18 Uhr
Hallo Brauseklaus,
Du hast sicher an meiner kurzen Antwort schon gemerkt, dass ich momentan ein Zeitproblem habe. Trotzdem kurzer Hinweis (der schwierig ist, weil ich denAufbau der .txt nicht kenne.
Muss nicht der Datensatzzeiger vor dem Lesen von WEAR neu gesetzt (positioniert) werden, damit er vor den betreffen Zeile zu lesen beginnt ?
Grüße
PCFJKG
Du hast sicher an meiner kurzen Antwort schon gemerkt, dass ich momentan ein Zeitproblem habe. Trotzdem kurzer Hinweis (der schwierig ist, weil ich denAufbau der .txt nicht kenne.
Muss nicht der Datensatzzeiger vor dem Lesen von WEAR neu gesetzt (positioniert) werden, damit er vor den betreffen Zeile zu lesen beginnt ?
Grüße
PCFJKG
LÖSUNG 07.06.2010, aktualisiert 18.10.2012
Hi,
kein Problem, ich bin für jede Kleinigkeit dankbar ;)
Habe mich bis hierher in einem anderem Thread hingearbeitet, der bastla hat mir da schon sehr weitergeholfen. Hier der Link: https://www.administrator.de/forum/definierten-abschnitt-aus-textdokumen ...
Dort ist auch der prinzipielle Aufbau der *.unv bzw. *.txt- Dokumente beschrieben.
kein Problem, ich bin für jede Kleinigkeit dankbar ;)
Habe mich bis hierher in einem anderem Thread hingearbeitet, der bastla hat mir da schon sehr weitergeholfen. Hier der Link: https://www.administrator.de/forum/definierten-abschnitt-aus-textdokumen ...
Dort ist auch der prinzipielle Aufbau der *.unv bzw. *.txt- Dokumente beschrieben.
Zitat von PCFJKG:
>
Muss nicht der Datensatzzeiger vor dem Lesen von WEAR neu gesetzt (positioniert) werden, damit er vor den betreffen Zeile zu lesen
beginnt ?
Wird er das nicht in Zeile 63, 64? Und die Textdatei müsste doch bis Zeile 92 noch zur Verfügung stehen...>
Muss nicht der Datensatzzeiger vor dem Lesen von WEAR neu gesetzt (positioniert) werden, damit er vor den betreffen Zeile zu lesen
beginnt ?
LÖSUNG 07.06.2010 um 21:10 Uhr
Habe den Fehler gefunden. Der CODE ist mit meiner Ergänzung soweit richtig. Der Grund für den Abbruch des Programmes war, dass beim Eintragen in die Tabelle die TEMPERATURE-Werte die maximale Zeilenanzahl von 65536 überschritten wurde.....
Grüße Brauseklaus
Grüße Brauseklaus
LÖSUNG 10.06.2010, aktualisiert 18.10.2012
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte