Hallo Gruß- und Namenloser,
da ich gerade etwas Zeit habe, versuche ich mich mal an der Aufgabe, auch wenn sie recht ungenau formuliert ist. Ich mutmaße einfach mal einiges:
Ausgangslage:
- Import.xlsx
Du hast eine Excel-Datei Import.xlsx
- Test1.txt
…
Test100.txt --> In jeder TXT steht Fließtext
Du hast 100 oder mehr Textdateien, in denen steht Text. Unter „Fließtext“ verstehe ich jetzt mal, dass da keine Zeilenumbrüche drin sind.
- Pfad wo das Ganze liegt lautet:
C:User\Boss\Desktop\Eigene Dateien\Tester
OK
- Ordner Name
Tester
Ja, hast du ja schon geschrieben.
Ich habe eine Excel Datei (Import.xlsx) mit zwei Spalten
–> Ablagenummer und Beschreibung.
Welche Spalten sind das?
Ich will zwei Button
haben. Ein Button soll DURCHSUCHEN heißen. Wenn ich den
betätige kann ich mir alle .TXT Dateien auswählen. Dann habe
ich einen Button IMPORTIEREN.
Wie wärs mit nur einem Button? Damit könntest du die Dateien auswählen, und dann werden die ausgewählten importiert.
Wenn ich den betätige, soll das
Skript den Namen der jeweiligen TXT Datei in die Ablagenummer
eintragen (ohne Suffix)
also den Dateinamen ohne .txt in eine Spalte
und den Inhalt der jeweiligen TXT
Datei in Beschreibung. Und das Ganze halt für alle TXT Dateien
untereinander je Zeile.Es wäre megageil wenn mir jemand das
GANZ konkret wie ich es brauche angeben könnte. Ich blicke das
Ganze nämlich nicht gut durch.
Na, dann verscuchen wirs mal. Wenn du „das Ganze nämlich nicht gut durch“-blickst, geh ich mal davon aus, dass du dich mit VBA nicht gut auskennst. Also machen wir eine Schtitt-für-Schritt Anleitung.
-
Öffne deine Datei Import.xlsx
-
Klicke mit der rechten Maustaste auf irgend einen Blattreiter und dann auf „Code anzeigen“. Der VBA-Editor geht auf.
-
In der Menüleiste klickst du auf „Einfügen“ und dann auf „Modul“.
-
In das große Fenster rechts kopierst du jetzt den folgenden Code rein:
Sub txtEinlesen()
Dim datei As String
Dim pfad As Variant
Dim zei As Long
Dim beschreibung As String
Const aSpalte As String = „A“ ’ Hier die Spalte für die Ablagenummer festlegen
Const bSpalte As String = „B“ ’ Hier die Spalte für die Beschreibung festlegen
Const ersteZeile As Long = 1 ’ Hier die Zeile festlegen, ab der die Einträge erfolgen sollen
ChDir „C:\User\Boss\Desktop\Eigene Dateien\Tester“
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Filters.Add „Text-Dateien“, „*.txt“
.InitialView = msoFileDialogViewDetails
.Title = „Wählen Sie eine oder mehrere TXT-Dateien aus“
If .Show -1 Then Exit Sub
zei = ersteZeile
For Each pfad In .SelectedItems
datei = dateiName(pfad)
Range(aSpalte & zei) = datei
beschreibung = komplettEinlesen(pfad)
Range(bSpalte & zei) = beschreibung
zei = zei + 1
Next pfad
End With
End Sub
Function dateiName(pfad As Variant) As String
Dim pfadFeld As Variant
pfadFeld = Split(pfad, „“)
dateiName = Left(pfadFeld(UBound(pfadFeld)), Len(pfadFeld(UBound(pfadFeld))) - 4)
End Function
Function komplettEinlesen(pfad As Variant) As String
Dim flen As Long
Dim fnum As Integer
flen = FileLen(pfad)
fnum = FreeFile
Open pfad For Input As #fnum
komplettEinlesen = Input(flen, #fnum)
Close #fnum
End Function
Achtung: Bei Kopieren von W-W-W Seiten wird am Ende immer irgend ein Stuss angehängt, der im Originaltext nicht drin steht. Der Code muss mit dem letzten
End Function
enden. Wenn noch was dahinter steht, lösch es weg.
-
In den drei Zeilen oben, die mit
Const
anfangen musst du die Spalten und Zeilen auswählen, in die die Daten importiert werden sollen. Ich habe die Spalten A und B und Zeile 1 vorgegeben. Bitte nach deinen Wünschen ändern.
-
Jetzt kannst du den VBA-Editor schließen.
-
Damit der Makro funktioniert, musst du deine Excel-Datei als .xlsm Datei speichern.
-
Wähle das Tabellenblatt aus, in das die Einträge rein sollen.
-
Jetzt machen wir uns den Button: Wenn in deinen Ribbons die „Entwicklertools“ nicht sichbar sind, musst du sie anzeigen lassen: Rechtsklick in einen leeren Bereich eines Ribbons und „Menüband anpassen“.
Im rechten Fenster den Haken von den „Entwicklertools“ setzen und OK.
10.Auf die „Entwicklertools“ klicken und dort auf „Einfügen“, dann aus den „Formularsteuerelementen“ die „Schaltfläche“ (links oben) auswählen.
In die Tabelle klicken, dort wo der Button hin soll.
- Ein Fenster „Makro zuweisen“ geht auf. Dort auf „txtEinlesen“ klicken und OK.
Der Button erscheint.
12.Rechtsklck auf den Button und „Text bearbeiten“. Jetzt kannst du die Beschriftung des Buttons ändern.
-
Irgendwo außerhalb des Buttons klicken. Jetzt ist er aktiviert.
-
Wenn du jetzt auf den Button klickst, sollte der Makro laufen. Das Verzeichnisfenster geht auf. Du Kannst (mit Strg oder Hochstelltaste) alle Dateien auswählen, die importiert werden sollen.
-
Mit klick auf „Öffnen“. Werden nacheinander alle gewählten Dateien „abgearbeitet“:
Der Dateiname wird in die Spalte A (oder was du im Code festgelegt hast) geschrieben, ab der Zeile, die du im Code festgelegt hast.
Der komplette Inhalt der Datei wird in die Spalte B (oder was du im Code festgelegt hast) geschrieben.
Ich habe vorausgesetzt, dass in den Dateien wirklich nur anzeigbarer Text steht und nicht igendwelche „bösen“ Steuerzeichen. Sonst könnte des Probleme geben.
Probier’s mal aus und gib ein Feedback.
Und schreib das nächste Mal einen Gruß!
Gruß, Andreas