Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
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

3 Probleme mit meinem Text-Import script

3 Probleme mit meinem Text-Import script
25.12.2015 17:42:29
Karl
Hallo zusammen,
ich importiere aus einem Verzeichnis mehre TXT-Dateien in ein Excel Sheet mittels dem angehängten VBA script. Soweit, so gut....
Dabei habe ich nun 3 Probleme, zu denen ich nicht richtig Abhilfe schaffen kann:
1) beim Import werden aus der Text-Datei die Umlaute nicht richtige umgesetzt, wie z.B.
"TBS: allen g'fällts hier" anstatt " "TBS: allen gefällts hier"
2) es sollte nach jeder einzelnenen Text-Datei eine Leerzeile eingefügt werden, jetzt wird der Inhalt jeder Txt-Datei am Stück runter aneinandergereiht
3) derzeit funktioniert der Import nur, wenn ALLE txt-Dateien in einem Verzeichnisordner sich befinden. Es soll jedoch der Pfad dahingehend erweitert werden, dass das script auch Unterordner des Hauptordners einbezieht. D.h., das Script soll automatisch im betrefffenden Hauptordner alle Unterordner nach txt-Dateien durchsuchen und importieren.
Meine VBA Kenntisse sind bescheiden (=kopieren von funktionsfähigen scripts) und bin daher auf Hilfe der Spezialisten angewiesen. Wenn mir jemand zu einem oder allen Fragen einen Hinweis liefern könnte, wäre dies super!!
Danke im voraus und GRuss,
Karl
mein Script:
Sub DateienLesen()
Call EventsOff
Dim DateiName As String
DateiName = Dir("C:\Tmp\test_txt\" & "*.txt")
Do While DateiName ""
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Tmp\test_txt\" & DateiName, Destination:=Range("C" & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row + 1))
.Name = DateiName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.Refresh BackgroundQuery:=False
End With
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub


Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 3 Probleme mit meinem Text-Import script
25.12.2015 17:56:58
ransi
HAllo,
Lade doch mal bitte 2 von diesen Textdateien hoch.
Dann hat man was zum Testen.
ransi

AW: 3 Probleme mit meinem Text-Import script
25.12.2015 18:35:20
Hajo_Zi
Zu Crossposting lies diese Seite Hajo-Excel.de
Durch Crosspostuing werden mehrere Gruppen von Leuten mit dem gleichen Thema befasst, ohne dass sie voneinander wissen.
Naturgemäß laufen dann die Antworten, die im einen Forum "zu spät" gegeben wurden, ins Leere und bleiben ohne Resonanz.
Es reicht also, zunächst in einem Forum zu posten - wenn die Antworten dann unbefriedigend sein sollten, steht es einem anschließend immer noch offen, ein anderes Forum zu Rate zu ziehen.
Ich mache keine Werbung für andere Foren und verzichte darum auf den Link.
lese mal FAQ

Anzeige
AW: HAJO: Das ist extrem nah an ZENSUR!!!
25.12.2015 19:15:44
JoWe
Hallo Hajo,
Du hast ja irgendwie recht, aber Dein "Ton" ist schon recht extremistisch.
Bitte überleg mal diese These: "Vielfalt ist Stärke"
Gruß
Jochen
Ich wünsch' Dir ein schönes Rest-Weihnachtsfest

Nö!
25.12.2015 19:27:16
RPP63
Hi JoWe!
Eigentlich ist es nur ein harmloser Hinweis darauf, dass Crossposting ohne Verlinkung der Foren nicht gerne gesehen wird.
Schließlich geht es nicht um Kostenvoranschläge in der Erwartung eines Auftrags, sondern um evtl. unnütze Hilfe, obwohl woanders bereits die Lösung steht.
Gerade bei "Neuen" wird diese Streuung gerne gesetzt.
Man könnte ja auch Tante "G" fragen, da braucht man wenigstens nicht davon auszugehen, dass Feedback erwartet wird …
Wetten, dass … der TE sich nicht mehr meldet?
Fragt sich Ralf

Anzeige
AW: Nein
25.12.2015 19:31:44
Hajo_Zi
Hallo Jochen,
bei Leuten die in zig Foren unter zig Namen den Beitrag schreibt, muss man nicht höflich sein.
Ich bin der Auffassung bei Crossposting muss man das auch nicht sein.
Gruß Hajo

Huch, seht Ihr? So entsteht Zwietracht und mehr...
25.12.2015 20:17:25
JoWe

AW: Huch, seht Ihr? So entsteht Zwietracht und mehr...
26.12.2015 00:46:16
Karl
@JoWe
danke für deine Antwort.
Ich lade mal das Paket mit den Beispieldateien hoch. Sorry, ich hatte das vergessen.
Die Zip enthält die Txt-dateien im Hauptverzeichnis (test-txt) wie auch in Unterverzeichnissen (txt1; txt2, txt3).
Das Script klappt wie gesat schon bei den im Hauptverzeichnis angelegten *.txt Dateien. Bei den Unterverzeichnissen happert's noch.
Frage 2) konnte mittlerweile gelöst werden, durch anpassen folgender Sequenz (ist bereits in der hochgeladenen Zip geändert). In der Zeile am Ende aus +1 plus 2 machen, so geht man in die übernächste Zeile:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Tmp\test_txt\" & DateiName, Destination:=Range("C" & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row + 1))
Danke & Gruss,
Karl
@haJo
da täuscht du dich: hier bin ich wieder :)
Denn ich bin überaus froh, wenn sich jemand um meine Probleme annimmt, die sehr wohl vorab durch Google versucht worden sind zu lösen. Dein Benimm mag wohl formal korrekt sein, doch stimmt letztendlich deine Art doch etwas befremdlich. Egal, du hast bestimmt deine verbitterten Gründe. Doch auch ich bin in anderen Foren als alter Hase für Problemlösungen bekannt und habe bei 2 Crosspostings nicht so eine Art drauf.

Anzeige
Als 'alter Hase' solltest du aber wissen, ...
26.12.2015 04:09:59
Luc:-?
…Karl,
dass man im MOF noch vor wenigen Jahren deinen diesbzgl Beitrag deshalb gesperrt hätte. Hier waren die Sitten zwar nie so rauh, aber einen entsprd Hinweis gibt's hier auch in den Forums-FAQ. Hättest du verlinkt bzw mit entsprd zeitlichem Abstand wär's kein Problem gewesen.
Dass dir Ransi inzwischen die Verlinkung längst abgenommen hatte, hast du anscheinend gar nicht bemerkt…
FroWeihn, Luc :-?

AW: Als 'alter Hase' solltest du aber wissen, ...
27.12.2015 16:04:11
Karl
@Luc:-?
tja, das stimmt. Doch unter den vielen objektiven und vor allem sachdienlichen Antworten kann es schon mal vorkommen unwichtige zu übersehen. Aber ich habe ja gemerkt, dass hier die Dorfpolizei ständig und überall die wirklich schweren Delikte entdeckt zur Strecke postet.
...noch was zum "alten Hasen":
Genau an diesem Punkt gibt es die "einen" und die "anderen". Ich bin ein Hase von den "anderen", welcher sich um Problemstellungen seiner selbst Willen annimmt und pragmatisch um Lösungen sucht. Mich interessiert es nicht, in wie vielen Foren ein Hilfesuchender sein Anliegen dargelegt hat. Mir wäre es auch zu blöd, das Netz zu Crosspostings abzusuchen und meine kostbare Zeit für erhobene Zeigefinger Postings aufzubringen. Das einzige, was ich nicht für gut heise, ist wenn der Fragende bei Lösung dies nicht allen anderen mitteilt. Denn das ist viel wichtiger, angefangene Post's mit einer Lösung zu versehen. Das werde ich auch hier machen.
Aber so tickt halt jeder anders....und das wird mal gut sein. Wären von den "anderen" nämlich mehr unterwegs, hätte ich zwischenzeitlich nicht meine Fragen bereits alle mit Erfolg beantwortet bekommen und ein lauffähiges Script an der Hand. Von Interesse ist dabei auch noch, dass 2 meiner Fragen in 2 unterschiedlichen Foren gelöst wurden und damit Top Lösungen erhalten habe.
Also, dann werde ich mal das Forum hier in meiner Bookmark Abteilung von "Excel-Hilfe" zu "wenn ich fragen zur Netiquette habe" verschieben. Denn wenn ich diesbezüglich wieder eine moralisch anrüchige Aktion vorhabe, zuerst das hier erfragen. Die "einen" werden sich dann sicherlich umgehend in wertvollen Fingerzeig-Postings sich ereifern.
Allen "anderen" möchte ich noch danken, ihre Meinung in meinem Sinne kund getan zu haben und damit an alten manifestierten längst überholten Grundsätzen gerüttelt zu haben.
Servus.

Anzeige
AW: 3 Probleme mit meinem Text-Import script
26.12.2015 11:33:05
mumpel
Hallo!
zu 1.: (Ungetestet) Die Zeile .TextFilePlatform = xlWindows ersetzen durch .TextFilePlatform = 65001
Gruß, René

AW: 3 Probleme mit meinem Text-Import script
27.12.2015 16:08:06
Karl
Hallo René,
vielen Dank für deinen Hinweis. Genau diese Änderung hat den Import nun richtig gelöst.
Nachfolgend noch das Script, wie es nun in allen 3 Fragen gelöst wurde und bestens funktioniert:
*****
Dim dateien()
Option Explicit
Sub DateienLesen()
Call EventsOff
Dim DateiName As String
Dim quelle As String
Dim i As Long
ReDim dateien(0)
dateien(0) = 0
quelle = "C:\Tmp\test_txt"
Call txtsuchen(quelle)
If dateien(0) = 0 Then
MsgBox "Keine .txt Dateien gefunden!"
Else
'Daten auslesen
For i = 1 To dateien(0)
DateiName = dateien(i)
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Tmp\test_txt\" & DateiName, Destination:=Range("C" & ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row + 2))
.Name = DateiName
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.Refresh BackgroundQuery:=False
End With
Next i
End If
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Function txtsuchen(quelle As String)
Dim suche
Dim ordner()
Dim i As Long
ReDim ordner(0)
ordner(0) = 0
ChDir (quelle)
'Ordner durchschauen
suche = Dir(quelle & "\*.*", vbDirectory)
Do Until suche = ""
'Normale Dateien rausfiltern
If (GetAttr(quelle & "\" & suche) = 16) Then
'die hier ankommen, sind Ordner, extra speichern
ordner(0) = ordner(0) + 1
ReDim Preserve ordner(ordner(0))
ordner(ordner(0)) = suche
Else
If Right(suche, 4) = ".txt" Then
dateien(0) = dateien(0) + 1
ReDim Preserve dateien(dateien(0))
dateien(dateien(0)) = suche
End If
End If
suche = Dir()
Loop
'jetzt durch die Ordner gehen
For i = 1 To UBound(ordner)
If Dir(ordner(i), vbNormal) = "" And Left(ordner(i), 1) "." Then
Call txtsuchen(quelle & "\" & ordner(i))
ChDir (quelle)
End If
Next
End Function
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige