online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon stoneart vom 10.11.2019, 13:51 Options

beliebige txt Datei in EXCE Datei einlesen

Guten Tag....

ich habe mir hier m Forum schon sehr viele hilfreiche Tips holen können. Ich hoffe "ihr" könnt mir bei meinem speziellen Problem auch weiterhelfen.
Ich möchte "ganz einfach" eine txt Datei in eine Vorlagen-EXCEL Datei zur weiterverarbeitung importieren, dessen Dateiname jedoch variabel ist...
Es ist so, dass ich von einem externen Geräte eine txt Datei generiert bekomme des Name sich aus dem aktuellen Datum sowie der Anzahl, der pro Tag generierten Dateien zusammen setzt (ttmmjanz.) . z.B. "101170001.txt"

Diese Datei wird immer in dem gleichen Ordner abgelegt und nach dem Import verschoben.

Gibt es hier überhaupt eine Möglichkeit?

Vielen Dank schon mal!

mfg
Martin


Antwort schreiben

Antwort 1 von Marie vom 10.11.2019, 15:44 Options

Zitat:
aktuellen Datum sowie der Anzahl, der pro Tag generierten Dateien zusammen setzt (ttmmjanz.) . z.B. "101170001.txt"


mit "101170001.txt" kann ich nun wirklich absolut nichts anfangen, ich gehe mal davon aus die Jahreszahl soll vierstellig sein und nicht 7000 heissen sondern 2007??

Wie viele Dateien sind das maximal pro Tag, kann ich eingrenzen for i = 1 to maxzahl??? das wäre einfacher.

Und noch ne Frage: Soll ich die textdatei nach dem Import verschieben?? Wenn ja wohin.

Und wenn Du noch sagst wie das Verzeichnis heisst, wo die textdateien sind, dann kann ich es gleicch einfügen.

Gruß Marie

Antwort 2 von stoneart vom 10.11.2019, 16:21 Options

Hallo Marie,

zunächst vielen Dank für die promte Reaktion!!!

...also der Dateiname ist schon richtig so... (101170001.txt) die 10 für den Tag die 11 für den Monat und die 7 für das Jahr und die 0001 ist die laufende Nummerierung der generierten Dateien

Pro Tag werden z.Z. nicht mehr als 5 txt-Dateien generiert. Nach dem die txt-Datei importiert wurde soll diese in einen definierten Ordner verschoben werden um eine "doppelten Import" und anschließenden Ausdruck zu vermeiden.

Danke nochmals...
Martin

Antwort 3 von Marie vom 10.11.2019, 16:36 Options

Ja Mist, jetzt hab ich mit Mühe die Punkte aus dem Datum rausgemacht, was denn nu?? ich könnte noch verstehen, wenn Du die Jahreszahl zweistellig aausgeben würdet, aber einstellig und dann führende Nullen vor der Nummer?? Und was machen wir dann 2010??????

Also unten in dem Code ist jetzt strHeute = "10112007", Nun wollte ich die Durchlaüfe dranhängen. Nun muss ich wohl von der Jahreszahl alles abtrennen ausser der letzten Ziffer und ab 2010 den Code ändern. Ferner muss ich drei idiotische Nullen reinschreiben, die niemals benutzt werden, wenn maximal 5 Dateien vorhanden sind. :-((


Sub OpenTxt()
Dim StrPath As String
Dim txtName As String
Dim strHeute As String
Dim intLaen As Integer
Dim intDot As Integer

strHeute = Date 'String splitten und Punkte entfernen:
Do While InStr(1, strHeute, ".") > 0
intLaen = Len(strHeute)
intDot = InStr(1, strHeute, ".")
strHeute = Left$(strHeute, intDot - 1) & Right$(strHeute, intLaen - intDot)
Loop

End Sub

Antwort 4 von stoneart vom 10.11.2019, 17:03 Options

....Danke für die Hilfe aber dieser Ansatz führt leider nicht zum gewünschten Ergebnis.... :-(
Ich habe versucht das ganze mal anders anzugehen und habe zwei Codes gefunden die kombiniert mir schon sehr helfen wüden.

_________________________________________________________

Auswahl einer Textdatei zum Import in ein EXCEL-Sheet:

Private Sub CommandButton1_Click()
Dim fname As Variant

fname = Application.GetOpenFilename("Text-Dateien,*.txt")
If fname <> False Then
With ActiveSheet
Workbooks.Open fname
Worksheets(1).UsedRange.Copy .Range("B10")
ActiveWorkbook.Close False
End With
End If
End Sub

_____________________________________________________

Importieren definierter Textelemente an einen definierten Platz innerhalb eines EXCEL-Sheets:

Private Sub CommandButton1_Click()
Dim Text1 As String


Open "C:\Dokumente und Einstellungen\...\test.txt" For Input As #1
i = 1
While Not EOF(1)
Line Input #1, z
a = Split(z, Space(1))
For n = 0 To UBound(a)
Cells(n + 1, i) = a(n)
Next
i = i + 2
Wend
Close #1
End Sub
_____________________________________________________

Die beiden Codes so kombiniert, dass ich die zu importierende txt-Datei auswählen kann und die einzelnen Textbereiche an einen definierten Platz innerhalb des EXCEL-Sheets imortiere!

Bin gut im Kopieren und Benutzen aber ne Niete was Programmierung angeht! :-(

.....????

Antwort 5 von Marie vom 10.11.2019, 17:07 Options

Sub OpenTxt()
Dim StrPath As String
Dim txtName As String
Dim strHeute As String
Dim intLaen As Integer
Dim intDot As Integer
Dim inti As Integer

strHeute = Date 'String splitten und Punkte entfernen:
Do While InStr(1, strHeute, ".") > 0
intLaen = Len(strHeute)
intDot = InStr(1, strHeute, ".")
strHeute = Left$(strHeute, intDot - 1) & Right$(strHeute, intLaen - intDot)
Loop
'am 10.11.2007 ist jetzt strHeute = "10112007"
' Du willst aber die Jahreszahl einstellig, ab 0010 zweistellig:

If Year(Date) < 2010 Then
strHeute = Left$(strHeute, 4) & Right$(strHeute, 1)
Else
strHeute = Left$(strHeute, 4) & Right$(strHeute, 2)
End If

'am 10.11.2007 ist jetzt strHeute = "10117"
' Nun 000 anhängen und dann 9 dateien durchlaufen
' Wenn es täglich mehr als 9 werden:
' neue Schleife machen mit einer führenden 0 weniger und Durchläufe von 10 bis 99 max
strHeute = strHeute & "000"
'hier das Verzeichnis der txts einfügen zum Beispiel: StrPath = "F:\temp"
StrPath = ThisWorkbook.Path

For inti = 1 To 9 ' 9 Durchläufe für täglich max 9 textdateien
txtName = StrPath & "\" & strHeute & inti & ".txt"
If FileExist(txtName) Then
' Hier importierst Du Deine txt.datei
' das kann ich nicht für Dich tun, da ich das Format nicht kenne
' Dann gleich verschieben in anderes Verzeichnis
End If
Next

End Sub


Function FileExist(ByVal file As String) As Integer
' True wenn Datei vorhanden, False wenn nicht vorhanden

Dim f

f = FreeFile
On Error GoTo FileExistError
Open file For Input Access Read As #f
Close #f
FileExist = True
Exit Function

FileExistError:
FileExist = False
Exit Function

End Function

Antwort 6 von Marie vom 10.11.2019, 17:10 Options

menno, wenn Dir das reicht, dass Du die dateinamen anklickst, dann hättest Du das ja auch gleich sagen können :-(
Mein Code prüft jetzt automatisch deine dämlichen Dateinamen durch bis zu 9 Dateien täglich. Habsch wohl für die Katz gemacht die Verrenkungen????

gruß Marie

Antwort 7 von stoneart vom 10.11.2019, 17:39 Options

...bin geplättet!!!

also wenn ich das zum laufen kriege ist das natürlich das was ich wollte.
Hab nur gedacht, dass ne abgespeckte Variante es auch tun würde....

Vielen, vielen Dank nochmal!!!!

Wie gesagt, muss das ganze nur noch zum laufen bringen... versuche das ausführen des Codes an einen "ButtonClick" zu binden... das sollte ich aber schon noch hinkriegen...?! ;-)

Antwort 8 von Marie vom 10.11.2019, 17:49 Options

Zitat:
Open "C:\Dokumente und Einstellungen\...\test.txt" For Input As #1
i = 1
While Not EOF(1)
Line Input #1, z
a = Split(z, Space(1))
For n = 0 To UBound(a)
Cells(n + 1, i) = a(n)
Next
i = i + 2
Wend
Close #1


Obigen Code musst Du natürlich jetzt einfügen mit der ersten Zeile:
Open txtName For Input As #1

an der stelle wo ich geschrieben habe:

' Hier importierst Du Deine txt.datei

Haste verstanden? Und wenn Du was nicht kapierts, dann sagste genau was!

Gruß Marie

Antwort 9 von stonebeach vom 10.11.2019, 18:06 Options

....Schon kapiert!!!! :-/

Ich Danke dir vielmals! Es funktioniert!
Du kannst dir gar nicht vorstellen wie sehr du mir geholfen hast!!!

Zum Hintergrund:
Dieses Tool möchte ich n ein bestehendes Rechnungs und Lieferscheinprogram einbinden... um:

1. Fehler bei der Übernahme von Daten zu vermeiden
2. Um auch Usern (Kollegen von mir) die noch weniger Ahnung vom Gebrauch eines PC haben als ich, es zu ermöglich per Kopdruck Lieferscheine zu erstellen.

Weitere Detail erspare ich dir hiermit!

Vielen, vielen Dank! nochmals für deinen Support!

Das Wochenende ist gerettet

Antwort 10 von Marie vom 10.11.2019, 18:08 Options

Freut mich. Nun bitte aber das Verschieben in ein anderes Verzeichnis auch gleich automatisieren, kannste das alleine?

Gruß Marie

Antwort 11 von stonebeach vom 10.11.2019, 18:11 Options

.... ähmm...

natürlich nicht!

...wollte dir damit jetz nicht auch noch auf die Nerven gehen!

Aber wenn duch schon fragst...?! ;-)

Antwort 12 von Marie vom 10.11.2019, 18:13 Options

:-) gedulde Dich bissel, nachher schau ich, muss erst was anderes tun.
Gruß Marie

Antwort 13 von Marie vom 10.11.2019, 19:00 Options

Zitat:
Dim strCopypath As String

oben in die Dimanweisung noch einfügen.

Zitat:
strCopypath = "C:\temp\" ' Pfad wo hinverschoben werden soll mit Backslash hinten
For inti = 1 To 9 ' 9 Durchläufe für täglich max 9 textdateien
txtName = StrPath & "\" & strHeute & inti & ".txt"
If FileExist(txtName) Then
' Hier importierst Du Deine txt.datei


' Dann gleich verschieben in anderes Verzeichnis
FileCopy txtName, strCopypath & strHeute & inti & ".txt"
Kill txtName
End If
Next


Achtung, bitte alles nur an der richtigen Stelle einfügen.

Gruß Marie

Antwort 14 von stoneart vom 10.11.2019, 19:31 Options

KLASSE!!!

So sollte es sein.... eine Auslagerungsdatei im txt Format wird von Externa generiert.
Sie kann sofort eingelesen und ensprechend zu einem Lieferschein und und sogar Rechnung verarbeitet werden und wird dann aus dem aktuellen Ordner in die Ablage verschoben... und das alles mit einem Mausklick!

Bin begeistert!

Jetzt können auch mal die Kollegen ran und ich mal in Urlaub!!!!
:-)

Danke, danke, danke!!!!

LG Martin

Ähnliche Themen

Batch-Datei, die Daten ab bestimmtem Datum in File schreibt
RealJacky  06.07.2007 - 65 Hits - 15 Antworten

Mehrere Dateien umbenennen mit Nummerierung
Iscitürk  18.08.2007 - 171 Hits - 2 Antworten

Exit in BAT-Datei ...
GDAVE  01.10.2007 - 111 Hits - 2 Antworten

Dateiname einer txt.-Datei in EXCEL einlesen
stoneart  14.11.2007 - 122 Hits - 16 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026