Beliebige Textdatei aus Ordner in Excel importieren (formatiert)

Beliebige Textdatei aus Ordner in Excel importieren (formatiert) möglich?

  • Ja

    Abstimmungen: 1 100,0%
  • Nein

    Abstimmungen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    1
#1
Hallo zusammen,

ich bin gerade dabei für meine Abteilung eine Excel-Datei zu erstellen, die beim Öffnen direkt eine beliebige Textdatei in korrekter Formatierung einlesen kann. Die Textdatei ist hierfür in einem bestimmten Ordner, in dem nur diese eine Datei liegt und keine weitere. Die Datei, die eingelesen werden soll wird immer gegen eine neue Textdatei ausgetauscht.
(Es handelt sich um Tabellen mit bis zu 87.000 Zeilen und ca. 20 Spalten)

Ablauf:

1. Textdatei wird aus einer Datenbank in den bestimmten Ordner gelegt und als #1.txt gespeichert
2. Excel-Datei wird geöffnet
3. Die Textdatei wird mit dem Öffnen direkt korrekt formatiert und importiert
4. Excel-Datei wird mit korrektem Namen wieder gespeichert

Ich muss hierbei folgendes beachten:

Unicode UTF-8
Trennzeichen |
Textquali. {kein}


Ich habe nun verschiedene Wege ausprobiert und der einfachste weg war für mich am Ende einfach ein Makro aufzuzeichnen:

Ich möchte aber umgehen, dass ich die Datei immer speziell benennen muss. Aktuell heißt sie #1

Gibt es hierfür eine Schreibweise, die eine Textdatei aus einem Ordner importieren kann ohne dem Festlegen eines bestimmten Dateipfades?

Oder sollte hierfür noch so etwas wie ein Explorer eingefügt werden? (Habe hierfür leider keine Verknüpfung mit dem Code des Explorers und dem Code zum importieren einer Textdatei hinbekommen)

Aktueller Code:
Code Anfrage.PNG

Ich bin leider erst Anfänger. Ich würde mich sehr über eure Hilfe freuen.

Vielen Dank im Voraus.


Freundliche Grüße

Valentin Stemmler
 

German

Well-Known Member
c-b Experte
#2
Grundsätzlich funktioniert das schon.
Code:
    Dim txtfile As Variant
    ' ChDrive ("C:\")
    ' ChDir ("\Users\stemmlerv\Desktop")
    txtfile = Application.GetOpenFilename(FileFilter:="Text-Dateien (*.txt), *.txt")
    If txtfile = False Then Exit Sub
  
    Workbooks.OpenText Filename:=(txtfile), Origin:=65001 ' etc. ...
Du kannst vorbestimmen, in welchem Verzeichnis die Suche starten soll (siehe die beiden auskommentierten Zeilen am Anfang). Die GetOpenFilename Methode öffnet dir einen Auswahldialog.
Du musst dann deinen Code für die OpenText Methode noch ergänzen (schreibe ich natürlich nicht von einer Bilddatei ab, du hast schließlich den Code vorliegen).
 
#3
@German VIELEN DANK! Funktioniert super!

Code:
Private Sub Workbook_open()

Dim txtfile As Variant
ChDrive ("C:\")
ChDir ("\Users\stemmlerv\Desktop")
txtfile = Application.GetOpenFilename(FileFilter:="Text-Dateien (*.txt), *.txt")
If txtfile = False Then Exit Sub


Workbooks.OpenText Filename:=(txtfile), Origin:=65001, StartRow _
        :=1, DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
        :=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
        Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 2), Array(2, 1), Array _
        (3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array( _
        10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), _
        Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array( _
        23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array(29, 1), _
        Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), Array( _
        36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array(41, 1), Array(42, 1), _
        Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), Array(48, 1), Array( _
        49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array(54, 1), Array(55, 1), _
        Array(56, 1)), TrailingMinusNumbers:=True
       
End Sub
 
Oben