Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

.unv mittels VBA auslesen

Frage Microsoft Microsoft Office

Mitglied: Brauseklaus

Brauseklaus (Level 1) - Jetzt verbinden

07.06.2010, aktualisiert 18.10.2012, 6167 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.

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.
Grüße Brauseklaus
Mitglied: PCFJKG
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
Bitte warten ..
Mitglied: Brauseklaus
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?

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.
 
Wenn ich
01.
 Set DateiEin = CreateObject("Scripting.FileSystemObject").OpenTextFile(Datei, 1, 0, -1)
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
Bitte warten ..
Mitglied: PCFJKG
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
Bitte warten ..
Mitglied: Brauseklaus
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: http://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...
Bitte warten ..
Mitglied: Brauseklaus
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst VBA: Wert von einer Website (pdf-Dokument) auslesen und in Excel kopieren (16)

Frage von Stern123 zum Thema VB for Applications ...

Microsoft Office
gelöst SharePoint, Word, Excel. Auslesen mittels VBA und XML (10)

Frage von schwazza zum Thema Microsoft Office ...

VB for Applications
Excel VBA XML-Nodes auslesen (4)

Frage von chef1568 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...