Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einlesen von textdateien in Excel

Einlesen von textdateien in Excel
02.09.2016 09:18:50
textdateien
moin zusammen,
ich habe eine frage: ist es möglich ein makro zur schreiben, das über einen knopf bestimmte Daten von einer rep-datei in Excel einliest. momentan kopiere ich die Daten und lese sie über den textkonvertierungsassistenten in die exceldatei ein, damit die entsprechenden Zeilen und Spalten richtig eingesetzt werden. nur ist das mit den Haupt- & Nebenwerten (siehe beigefügte Datei) mühselig.
danke euch.
https://www.herber.de/bbs/user/107969.zip

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einlesen von textdateien in Excel
02.09.2016 12:06:43
textdateien
Hallo Ali,
zu Deiner ersten Frage: ist es möglich ein makro zur schreiben, das über einen knopf bestimmte Daten von einer rep-datei in Excel einliest?
Ja, das ist möglich. ich habe es dir eingebaut, Normalerweise ist Arbeit für ein Programmierer
https://www.herber.de/bbs/user/107974.xlsm
Gruß AndrRo
AW: Einlesen von textdateien in Excel
02.09.2016 15:31:22
textdateien
Hallo Andro,
danke erstmal für die Hilfe. Wenn ich den Knopf drücke kommt eine Fehlermeldung ( Laufzeitfehler "1004".:
Fehler der Methode "GetOpenFilename" des Objekts "_Application". ). Mir ist nicht ganz klar wieso, da die Codezeile:
Materialliste = Application.GetOpenFilename(FileFilter:="REP-Dateien (*.rep), *.rep")
If Materialliste = False Then Ende = True: Exit Sub
korrekt zu sein scheint.
Auf der Arbeit benutze ich Windows 10 mit excel 2016 und zu Hause mac und ebenfalls excel 2016. Seltsamerweise hat das Makro auf der Arbeit funktioniert. Ich wollte es dann entsprechend zu Hause nochmal anpassen, da einige Werte nicht aufgelistet wurden...
Anzeige
nicht Mac-kompatibel
02.09.2016 16:11:59
KlausF
Hallo Ali,
Application.GetOpenFilename(FileFilter:="REP-Dateien (*.rep), *.rep")
funktioniert nicht auf dem Mac. Der Mac kennt keine FileFilter.
Gruß
Klaus
AW: nicht Mac-kompatibel
02.09.2016 16:34:36
Ali
Hallo Klaus,
und wenn ich FileFilter rauslasse und ihm sage er solle einfach alle Dateien anzeigen lassen? Geht das auch, falls ja wie? :))
AW: nicht Mac-kompatibel
02.09.2016 16:44:33
KlausF
Hallo Ali,
ja das geht. Tausche mal wie folgt aus:
...
'Liste wählen
#If Mac Then
Materialliste = Application.GetOpenFilename(Title:="REP-Datei öffnen")
#Else
Materialliste = Application.GetOpenFilename(FileFilter:="REP-Dateien (*.rep), *.rep")
#End If
If Materialliste = False Then Ende = True: Exit Sub
...
Ich fürchte aber, dass Du trotzdem kein richtiges Ergebnis bekommen wirst
weil der Mac - glaube ich - keine rep-Dateien kennt. Es wird wohl etwas
eingelesen werden aber wohl nicht korrekt in Spalten umgesetzt werden.
Kannst ja mal probieren.
Gruß
Klaus
Anzeige
AW: nicht Mac-kompatibel
02.09.2016 18:25:40
Ali
Danke, das hat mir schon weitergeholfen.
Nun bleibt noch die Frage offen, wieso die Datei nicht an allen Stellen die richtigen Nebenwerte zu den Hauptwerten lädt?! Dies tut er sowohl bei Windows als auch bei Mac nicht. Könnte es mir dieser Codezeile zu tun haben:
Hauptzeile = Range("A:A").Find(Trim(Left(textzeile, 4))).Row
?
Sonst erkenne ich da keinen Fehler. Weiß jemand weiter? :)
Hier noch einmal der ganze Code:
Sub einlesen_REP()
'Geh auf Seite Einlesen
Sheets("Mappe1").Activate
'Liste wählen
Materialliste = Application.GetOpenFilename(Title:="REP-Dateien (*.rep), *.rep")
If Materialliste = False Then Ende = True: Exit Sub
'Blatt löschen
Range(Cells(3, 1), Cells(10000, 40)).ClearContents
'REP-Datei öffnen
Zeile = 2
Open Materialliste For Input As #1
'so lange bis das Ende des Reports erreich ist
Do While Not EOF(1)
'Zeile lesen
Line Input #1, textzeile
If Len(textzeile) = 0 Then GoTo Weiter
If InStr(1, textzeile, "Hauptwerte") > 0 Then Hauptwert = True
If InStr(1, textzeile, "Nebenwerte") > 0 Then Hauptwert = False
Select Case Trim(Left(textzeile, 4))
Case "Stab"
Line Input #1, textzeile
GoTo Weiter
Case Is 
Die Datei zum einlesen:
https://www.herber.de/bbs/user/107990.txt
Danke.
Anzeige
WorksheetFunction.Trim
02.09.2016 23:19:00
KlausF
Hi Ali,
keine Ahnung ob das hilft:
Ersetze mal überall Trim durch WorksheetFunction.Trim
Ansonsten habe ich immer ein Problem damit, wenn die Variablen nicht definiert sind.
Wenn Du über das Makro die Zeile Option Explicit setzt wirst Du die entsprechenden
Fehlermeldungen erhalten. Vielleicht kann Dir in der Folge noch jemand anderes weiter helfen,
weil ich mich mit Textimport unter Windows nicht so auskenne (habe einen Mac).
Gruß
Klaus
Hat jemand noch eine Idee? :)
03.09.2016 10:45:42
Ali
moin zusammen,
kann jemand den Fehler in dem folgenden Makro finden? leider werden zu den hauptwerten nicht die richtigen Nebenwerte geladen. Die Hauptwerte jedoch werden richtig und vollständig geladen, weshalb ich vermute, dass das problem ab der codezeile Hauptzeile = Range("A:A").Find(Trim(Left(textzeile, 4))).Row zu finden ist. hier nochmal der gesamte code:
Sub einlesen_REP()
'Geh auf Seite Einlesen
Sheets("Mappe1").Activate
'Liste wählen
Materialliste = Application.GetOpenFilename(Title:="REP-Dateien (*.rep), *.rep")
If Materialliste = False Then Ende = True: Exit Sub
'Blatt löschen
Range(Cells(3, 1), Cells(10000, 40)).ClearContents
'REP-Datei öffnen
Zeile = 2
Open Materialliste For Input As #1
'so lange bis das Ende des Reports erreich ist
Do While Not EOF(1)
'Zeile lesen
Line Input #1, textzeile
If Len(textzeile) = 0 Then GoTo Weiter
If InStr(1, textzeile, "Hauptwerte") > 0 Then Hauptwert = True
If InStr(1, textzeile, "Nebenwerte") > 0 Then Hauptwert = False
Select Case Trim(Left(textzeile, 4))
Case "Stab"
Line Input #1, textzeile
GoTo Weiter
Case Is 
und hier eine beispieldatei zum einlesen:
https://www.herber.de/bbs/user/107990.txt
Anzeige
AW: Hat jemand noch eine Idee? :)
04.09.2016 14:37:20
AndrRo
Hallo Ali,
der vergleich muss über die ganze Zelle erfolgen,
ändere
Hauptzeile = Range("A:A").Find(Trim(Left(textzeile, 4))).Row
in:
Hauptzeile = Range("A:A").Find(Trim(Left(textzeile, 4)), Lookat:=xlWhole).Row
gruss
AndrRo
Aber es gibt noch ein Problem
04.09.2016 14:51:37
AndrRo
... Die Stab-Nummern sind teilweise mehrfach vergeben, somit findet Excel immer nur die erste Stab-Nummer und überschreibt dann die Werte.
Gruss AndrRo
AW: Aber es gibt noch ein Problem
04.09.2016 15:03:34
AndrRo
erweitere die Zeile
If InStr(1, textzeile, "Hauptwerte") > 0 Then Hauptwert = True
um wie folgt:
If InStr(1, textzeile, "Hauptwerte") > 0 Then Hauptwert = True: Startpunkt = Zeile
und ändere nochmal die Find-Zeile in:
Hauptzeile = Range("A:A").Find(Trim(Left(textzeile, 4)), After:=Cells(Startpunkt, 1), Lookat:=xlWhole).Row
Dann sollte es funktionieren.
Anzeige
AW: Aber es gibt noch ein Problem
07.09.2016 09:02:24
Ali
hallo andrro,
erstmal vielen dank für deine hilfe und dass du dir so viel zeit nimmst.
Leider zeigt er bei mir trotzdem einen fahler in der find-zeile. anbei mein Code, den ich für mein blatt angepasst habe:
Sub einlesen_REP()
'Geh auf Seite Einlesen
Sheets("Statik").Activate
'Liste wŠhlen (Unterschied Mac/Windows)
#If Mac Then
Materialliste = Application.GetOpenFilename(Title:="REP-Datei šffnen")
#Else
Materialliste = Application.GetOpenFilename(FileFilter:="REP-Dateien (*.rep), *.rep")
#End If
If Materialliste = False Then Ende = True: Exit Sub
'Blatt lšschen
Range(Cells(2, 1), Cells(10000, 40)).ClearContents
'REP-Datei šffnen
Zeile = 1
Open Materialliste For Input As #1
'so lange bis das Ende des Reports erreicht ist
Do Until EOF(1)
'Zeile lesen
Line Input #1, textzeile
If Len(textzeile) = 0 Then GoTo Weiter
If InStr(1, textzeile, "Hauptwerte") > 0 Then Hauptwert = True: Startpunkt = Zeile
If InStr(1, textzeile, "Nebenwerte") > 0 Then Hauptwert = False
Select Case Trim(Left(textzeile, 4))
Case "Stab"
Line Input #1, textzeile
GoTo Weiter
Case Is 

Anzeige
probier mal...
07.09.2016 13:24:55
AndrRo
anscheinend liegt das Problem daran, dass Zahlen und Text miteinander verglichen werden.
versuch mal...
Hauptzeile = Range("A:A").Find(CSng(Left(textzeile, 4)), After:=Cells(Startpunkt, 1), _
Lookat:=xlWhole).Row
bei mir laufen beide Varianten problemlos durch.
gruß AndrRo
AW: probier mal...
08.09.2016 09:42:13
Ali
ich hab meinen fehler gefunden. die rep-datei, die ich dir als Beispiel geschickt hatte (aus der die Daten ausgelesen werden sollten), habe ich gekürzt, da die Daten davor nicht wichtig waren für meine zwecke. wenn ich nun diese "unnützen" Daten, bestehend aus Zahlen und Text, rauslösche, sodass nur die Haupt- und Nebenwerte in der rep-Datei übrig bleiben, dann funktioniert der Code auch bei mir.
gibt es auch eine Möglichkeit der find-zeile bzw. dem Startpunkt zu sagen, dass er nur die haupt- und Nebenwerte auslesen soll? ich bin überrascht, da der Code vorher in der lage war trotz der unnützen Daten die richtigen werte auszulesen.
Anzeige
AW: probier mal...
08.09.2016 11:41:47
AndrRo
Zitat:
gibt es auch eine Möglichkeit der find-zeile bzw. dem Startpunkt zu sagen, dass er nur die haupt- und Nebenwerte auslesen soll?
da muss ich noch mal nachhaken. Du möchtest also eine Liste nur mit Hauptwerte- und dazugehörige Nebenwertebereiche, ohne Titel und Leerzeilen? Dann ...
Case Else
If Hauptwert = True Then
Zeile = Zeile + 1
Cells(Zeile, 1) = Trim(textzeile)
Zeile = Zeile + 1
End If
deaktivieren oder löschen. Gruß AndrRO
AW: probier mal...
08.09.2016 11:41:54
AndrRo
Zitat:
gibt es auch eine Möglichkeit der find-zeile bzw. dem Startpunkt zu sagen, dass er nur die haupt- und Nebenwerte auslesen soll?
da muss ich noch mal nachhaken. Du möchtest also eine Liste nur mit Hauptwerte- und dazugehörige Nebenwertebereiche, ohne Titel und Leerzeilen? Dann ...
Case Else
If Hauptwert = True Then
Zeile = Zeile + 1
Cells(Zeile, 1) = Trim(textzeile)
Zeile = Zeile + 1
End If
deaktivieren oder löschen. Gruß AndrRO
Anzeige
AW: probier mal...
08.09.2016 14:39:49
Ali
Sorry, ich hab mich falsch ausgedrückt. Die Leerzeilen und Überschriften sind wichtig. Was ich mit "unnützem" Text meine findest du in dem unten eingefügtem File. Das sind die Zeile 1 bis 69088.
Wenn du nämlich versuchst diesen Report einzulesen, wirst du feststellen, dass man eine Fehlermeldung erhält.
https://www.herber.de/bbs/user/108081.zip
Weiter im neuen Betrag
09.09.2016 07:46:35
AndrRo
Hallo Ali,
da dieser Betrag nur noch im Archiv angezeigt wird, habe ich meine Antwort im neuen Beitrag vom 09.09. bantwortet. Gruß AndrRo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige