Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

txt-dateien einlesen, pdf-Druck, speichern

txt-dateien einlesen, pdf-Druck, speichern
24.07.2013 16:35:35
Anna
Hallo Alle zusammen!
Ich verzweifle gerade an einem Problem, ich weiß, dass hier immer wieder ähnliche Fragen gestellt werden, nur leider habe ich nichts gefunden, was konkret mein Problem löst. Da ich noch nie mit VBA programmiert habe, aber zügig eine Problemlösung brauche, versuche ich es mal über dieses Forum.
Also:
Ich muss eine unbekannte Anzahl von txt-Dateien auswerten. Die entsprechende Arbeitsmappe ist bereit.
Bei jeder Auswertung sollen im Tabellenblatt "Datenimport" in C3:F35043 die erste txt-Datei aus Ordner 1 eingelesen werden.
Dann soll die erste txt-Datei gleichen Namens aus Ordner 2 im Tabellenblatt "Datenimport" in I3:L35043 eingelesen werden.
Die Zellen C26282:L35043 sollen als Zahl definiert werden.
!!!Wenn es möglich ist!!! Soll dann das Tabellenblatt "Auswertung" meiner Arbeitsmappe als pdf im Ordner 3 mit Namen der eingelesenen Datei gedruckt werden.
Dann soll die Arbeitsmappe mit Namen der eingelesenen Datei im Ordner 4 als .xls oder .xlsx abgespeichert werden.
Dann soll der Prozess mit den jeweils 2. txt-Dateien aus Ordner 1 und 2 wiederholt werden. Solange bis alles ausgewertet und abgespeichert ist.
Ich bedanke mich jetzt schon dafür, falls mir jemand helfen kann!
Achso:
Der Aufbau der txt-Dateien ist wie folgt:
5 Spalten mit jeweils 35040 Zeilen, wobei die erste Spalte nicht eingelesen werden soll (ist lediglich die Zeitangabe).

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: txt-dateien einlesen, pdf-Druck, speichern
24.07.2013 17:28:43
Oberschlumpf
Hi Anna
zeig uns mal
deine Excel-Datei
deine txt-Datei1
deine txt-Datei2
Wir wissen weder, wie die eine noch die andere Datei aufgeaut ist.
Am besten wäre, wenn du uns in der Exceldatei zeigst, wo + wie die Daten aus den txt-Dateien sein sollen.
Du "erledigst" das per Hand, wir versuchen Automatismen einzubauen.
Gibt es nur Verzeichnis1 + Verzeichnis2, in denen die txt-Dateien gespeichert sind?
Wie genau heißen denn die Verzeichnisse?
Ciao
Thorsten

AW: txt-dateien einlesen, pdf-Druck, speichern
24.07.2013 22:33:13
Anna
Hallo!
Danke für deine Rückmeldung und tut mir leid, dass ich es nicht gleich ausführlich gemacht habe! Hier habe ich mal einen Ausschnitt der einzulesenden txt-Datei hochgeladen, damit der Aufbau deutlich wird. Der Aufbau von txt-Datei aus Ordner 1 ist identisch mit dem aus Ordner 2!!
https://www.herber.de/bbs/user/86540.txt (Ich hoffe das hat mit dem Upload geklappt)
Es sind 5 Spalten, mit jeweils 35.040 Zeilen, wobei nur die Spalten 2,3,4 und 5 eingelesen werden sollen.
Hier der Aufbau meines Excel-Blattes "Datenimport":
Userbild
Hier die genauen Namen und Pfade der einzelnen Ordner 1 bis 4, sowie Pfad meiner Arbeitsmappe:
Arbeitsmappe:
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\
Ordner 1 mit txt-Dateien (wie zuvor beschrieben):
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\
Ordner 2 mit txt-Dateien (wie zuvor beschrieben, gleicher Aufbau wie in Ordner 1)
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\
Ordner 3 (falls möglich Ort der pdf-Ausdruck der des Blattes "Auswertung" aus meiner Arbeitsmappe)
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Auswertung PDF\
Ordner 4 (Jeweiliges Abspeichern der Excel-Mappe mit jeweiligen Namen der aktuell eingelesenen txt-Datei)
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Auswertung Excel\
VG und einen schönen Abend noch! ^^

Anzeige
AW: txt-dateien einlesen, pdf-Druck, speichern
25.07.2013 06:35:03
Oberschlumpf
Hi Anna
Das Bsp mit der txt-Datei ist schon sehr gut.
Aber wo ist die Excel-Bsp-Datei?
Du zeigst nur ein Bild.
Ich mag nicht Exceldateien "nachbauen", weil eine Datei trotz Bildanzeige noch Eigenschaften haben kann, die man im Bild gar nicht sieht.
Außerdem hast du die Datei doch schon.
Und wenn du das Original nicht zeigen willst/kannst/darfst, dann mach eine Kopie der Originaldatei und ersetz die echten Daten durch Bsp-Daten.
Wenn du 100% sicher bist, dass es ausreicht, nur das Tabellenblatt "Datenimport" zu zeigen, dann löschst du halt die anderen Blätter in der Bsp-Datei.
nächste Irritation:
Du schreibst:
Ordner 1 mit txt-Dateien (wie zuvor beschrieben):
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\
Ordner 2 mit txt-Dateien (wie zuvor beschrieben, gleicher Aufbau wie in Ordner 1)
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\

Lässt man die jeweils oberen Zeilen weg, ergibt das:

D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 1\

Es ist für Ordner1 + Ordner2 also ein und derselbe Ordner (Verzeichnis).
Wieso ist dann die Rede von Ordner1 + Ordner2?
Und auch in dem Bild sieht es rechts aus wie eine Kopie von links.
Überschrift + Daten scheinen identisch zu sein (außer dass nur rechts Zeitangaben vorhanden sind).
Ich schau während der Arb.zeit hin und wieder mal hier rein, und mach mir n paar Gedanken über deine Antworten, wenn sie denn im Lauf des Tages eintreffen.
Aber zum Antworten komm ich wohl erst heute abend, da ich einiges zu tun hab heute.
Nur schon mal als Info.
Ciao
Thorsten

Anzeige
AW: txt-dateien einlesen, pdf-Druck, speichern
25.07.2013 09:07:49
Anna
Hallo Thorsten!
Du hast natürlich recht, Ordner 2 hat folgenden PFad:
D:\Eigene Dateien\Auswertung Modell\Auswertung V1\Datenimport\Feuchte 2\
Ich habe mal eine Arbeismappe mit hochgeladen, die Auswertung der eingelesenen Daten erfolgt dann einfach in Excel über Formeln und wird automatisch im Blatt "Auswertung" dargestellt (Daten, Diagramme, etc). Wie das Auswerteblatt aussieht kann ich dir mal als Bild anhängen.
https://www.herber.de/bbs/user/86546.xls
Userbild
Vielleicht einmal kurz vorweg, was ich eigentlich machen muss. Ich muss hygrothermische Simulationen fahren und anschließend auswerten. Wir sind gerade dabei ein neues Modell zu entwickeln und wollen dies zur Zeit validieren. DESWEGEN weiß ich noch nicht genau, wie viele txt-Dateien es werden.
Der Aufbau bleibt aber immer gleich.
Für jede Auswertung wird jahreszeitabhängig eine Feuchtespeicherfunktion 1 und 2 zugrunde gelegt, deswegen der Ordner "Feuchte 1" und "Feuchte 2".
Das in meinem Excel-Blatt gerade noch die gleichen Daten stehen unter beiden Feuchtespeicherfunktionen liegt daran, dass das einfach Beispieldaten sind aus vorherigen Simulationan anderer Projekte, damit ich meine Arbeitsmappe für die Auswertung vorbereiten konnte.

Anzeige
AW: txt-dateien einlesen, pdf-Druck, speichern
25.07.2013 17:31:24
Anna
Guten Abend Thorsten!
Ich hatte das Problem auch in einem anderen Forum gepostet, und habe von einem sehr netten Menschen eine Hilfe bekommen, die leider noch nicht ganz funktioniert. Jetzt zeigt er mir den Laufzeitfehler '9' an
Indes außerhalb des gültigen Bereichs.
Hier der Code, hast du eine Idee woran das liegen könnte oder ob etwas mit meinen txt-Dateien nicht stimmt?
Option Explicit
Public Sub Main()
'Wichtige Bedingungen:
' 1. Alle txt-Dateien in Ordner 1 müssen in Ordner 2 vorhanden sein!
' 2. Alle txt-Dateien mit gleichem Namen in Ordner 1 und Ordner 2 müssen die gleiche
'    Länge haben.
' 3. Alle txt-Dateien müssen 5 Spalten besitzen
' 4. Keine der txt-Dateien hat eine Überschrift
' 5. Vor einem Wiederholten abruf sollten die bereits exportierten Dateien aus den Export
'    -Ordnern gelöscht werden, da sonst bei jedem Speichern eine Frage kommt.
' 6. Die Angabe von Pfaden erfordert immer einen Backslash (\) am Ende.
' 7. SaveAsPDF speichert vorläufig noch als html-Datei, da Office 2003 keine PDF- _
Speicherung
'    bietet. Dies kann ab Office 2007 angepasst werden.
' 8. Keiner der verwendeten Dateinamen darf einen Punkt ausser dem Trenner zur Dateinamens
'    -erweiterung haben, da sonst falsche Dateien gespeichert werden.
' 9. Alle Verweise auf Ordner, Dateinamen, FileExtensions sind noch anzupassen!
Import
End Sub
Private Sub Import()
Dim sPfadInput1 As String
Dim sPfadInput2 As String
Dim i As Integer
Dim sFoundFile As String
Dim iFileNum As Integer
Dim sFileMuster As String
Dim aWertArray1() As Variant
Dim aWertArray2() As Variant
Dim aWertZeilen() As String
Dim aTemparray
Dim lZeilenAnzahl As Long
Dim fso As Object
Dim oFile As Object
Dim rInputRange1 As Range
Dim rInputRange2 As Range
Set rInputRange1 = Worksheets("Datenimport").Range("C3") 'erste Zelle des Zielbereichs 1
Set rInputRange2 = Worksheets("Datenimport").Range("I3") 'erste Zelle des Zielbereichs 2
sPfadInput1 = "C:\DATEN\test\Auswertung Modell\Datenimport\Feuchte 1\"
sPfadInput2 = "C:\DATEN\test\Auswertung Modell\Datenimport\Feuchte 2\"
sFileMuster = "*.txt"
sFoundFile = Dir(sPfadInput1 & sFileMuster)
If sFoundFile = "" Then
MsgBox "Keine Textdateien in Verzeichnis"
Exit Sub
End If
Do 'Schleife alle Textdateien
iFileNum = FreeFile
lZeilenAnzahl = GetNumberOfLines(sPfadInput1 & sFoundFile) 'Die Datei aus dem ersten  _
Verzeichnis einlesen
ReDim aWertZeilen(lZeilenAnzahl - 1)
ReDim aWertArray1(lZeilenAnzahl, 3)
ReDim aWertArray2(lZeilenAnzahl, 3)
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(sPfadInput1 & sFoundFile)
i = 0
Do While oFile.AtEndOfStream  True 'AlleDatenzeilen einlesen
aWertZeilen(i) = oFile.Readline
i = i + 1
Loop
For i = 0 To UBound(aWertZeilen) 'Die Datenzeilen in Spalten aufteilen
aTemparray = Split(aWertZeilen(i), vbTab)
aWertArray1(i, 0) = aTemparray(1) 'Die erste Spalte kann verworfen werden
aWertArray1(i, 1) = aTemparray(2)
aWertArray1(i, 2) = aTemparray(3)
aWertArray1(i, 3) = aTemparray(4)
Next i
Set oFile = fso.OpenTextFile(sPfadInput2 & sFoundFile) 'Die Datei aus dem zweiten  _
Verzeichnis einlesen
i = 0
Do While oFile.AtEndOfStream  True
aWertZeilen(i) = oFile.Readline
i = i + 1
Loop
For i = 0 To UBound(aWertZeilen) 'Die Datenzeilen in Spalten aufteilen
aTemparray = Split(aWertZeilen(i), vbTab)
aWertArray2(i, 0) = aTemparray(1) 'Die erste Spalte kann verworfen werden
aWertArray2(i, 1) = aTemparray(2)
aWertArray2(i, 2) = aTemparray(3)
aWertArray2(i, 3) = aTemparray(4)
Next i
'Die Arrays in die gewünschten Tabellenbereiche einfügen
rInputRange1.Resize(UBound(aWertArray1) + 1, 4) = aWertArray1
rInputRange2.Resize(UBound(aWertArray2) + 1, 4) = aWertArray2
'Als PDF speichern
SavePDF (sFoundFile)
'Als XLS speichern
SaveXLS (sFoundFile)
'Nächste Datei aus Verzeichnis holen
sFoundFile = Dir()
Loop While sFoundFile  "" 'Wenn es keine Datei mehr gibt, sind wir durch.
End Sub
Private Sub SavePDF(sDateiName As String)
Dim sFixedPath As String
Dim sFixedExt As String
Dim sSaveName As String
Dim aFileNameArray
Dim tempWKB As Workbook
Dim aktWKB As Workbook
aFileNameArray = Split(sDateiName, ".") 'Die Dateiendung wegwerfen
sFixedPath = "C:\DATEN\test\Auswertung Modell\Datenexport\PDF\" 'Den Ausgabepfad festlegen
sFixedExt = ".htm" 'Die neue Dateiendung festlegen
sSaveName = sFixedPath & aFileNameArray(0) & sFixedExt
Set aktWKB = ActiveWorkbook
Set tempWKB = Workbooks.Add(xlWBATWorksheet)
tempWKB.Worksheets(1).Name = "Auswertung" 'Das eingefügte Blatt passend benennen
aktWKB.Worksheets("Auswertung").UsedRange.Copy 'Die Relevanten Daten aus dem Ursprungsblatt  _
kopieren
tempWKB.Worksheets("Auswertung").Range("A1").PasteSpecial Paste:=xlPasteValues 'Die Werte  _
Einfügen
tempWKB.Worksheets("Auswertung").Range("A1").PasteSpecial Paste:=xlPasteFormats 'Die  _
Formate übertragen
tempWKB.SaveAs Filename:=sSaveName, FileFormat:=xlHtml 'Als PDF speichern
tempWKB.Close 'Schließen
End Sub
Private Sub SaveXLS(sDateiName As String)
Dim sFixedPath As String
Dim sFixedExt As String
Dim sSaveName As String
Dim aFileNameArray
sFixedPath = "C:\DATEN\test\Auswertung Modell\Datenexport\Excel\"
sFixedExt = ".xls" 'zunächst als Office 2003 - xls Datei
aFileNameArray = Split(sDateiName, ".") 'die alte Extension verwerfen
sSaveName = sFixedPath & aFileNameArray(0) & sFixedExt 'Speichernamen festlegen
ActiveWorkbook.SaveCopyAs sSaveName 'Kopie speichern (Achtung, inklusive Makros)
End Sub
Private Function GetNumberOfLines(ByVal strFile As String) As Long 'Hilfsfunktion um die anzahl  _
benötigter Zeilen auszulesen.
Dim fso As Object
Dim ts As Object
Dim TempNum As Long
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(strFile)
ts.ReadAll
TempNum = ts.Line
Set ts = Nothing
Set fso = Nothing
GetNumberOfLines = TempNum
End Function 
Beim Debuggen wird folgende Zeile im Sub markiert:
For i = 0 To UBound(aWertZeilen) 'Die Datenzeilen in Spalten aufteilen
aTemparray = Split(aWertZeilen(i), vbTab)
aWertArray2(i, 0) = aTemparray(1) 'Die erste Spalte kann verworfen werden 
aWertArray2(i, 1) = aTemparray(2)
aWertArray2(i, 2) = aTemparray(3)
aWertArray2(i, 3) = aTemparray(4)
Next i 
Ich hoffe du hast dir jetzt noch keine großen Umstände gemacht, wenn dann tut es mir leid, ich habe ne zeitlang keine Antworten bekommen und es in mehreren Foren probiert, in der Hoffnung, dass mir einer hilft.
VG Anna

Anzeige
AW: txt-dateien einlesen, pdf-Druck, speichern
25.07.2013 17:42:40
Oberschlumpf
Hi Anna
Da hab ich aber wirklich Glück gehabt, dass ich noch gar keine Zeit für deine Datei hatte.
Sorry, das, was du tust, nennt sich Crossposting (gleiche Frage in mehreren Foren), und wird eigentlich von keinem möglichen Antworter gern gesehen.
Denn, wie du selbst schreibst....Ich hoffe du hast dir jetzt noch keine großen Umstände gemacht....
Und was wäre, wenn ich schon 1 bis mehrere Stunden Zeit investiert hätte?
Ja, ich weiß, du wartest auf Antworten schon soo lange, und denkst dir: "viele Leute fragen kann die Wartezeit verkürzen"
Nu ja, und mit zeigen von Dateien hast du es auch nicht so, oder?
Was soll ich mit deinem Code anfangen?
Ich müsste ihn testen. Kann ich aber nicht, weil nur hier als Text vorhanden.
Da ich die Datei nicht kenne, in der dir der Code gezeigt wurde, oder in die du den Code eingefügt hast, ist es für mich unmöglich, so zu helfen.
Zeig also die Datei MIT Code. Dann kann ich mal schauen. Aber natürlich ist das noch keine Garantie, dass ich ne Lösung für deinen Laufzeitfehler 9 finde, der darauf hinweist, dass ein verwendeter Index einen zu hohen Wert hat...oder so ähnlich.
Also....no file - no party
Ciao erst mal
Thorsten
Anzeige

338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige