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

Textdateien in excel einfügen mit vba

Textdateien in excel einfügen mit vba
23.03.2017 18:24:42
Eric
Hallo,
ich möchte diverse textdateien in excel einfügen, mehrere Dateien aus einem auszuwählendem Ordner. Jede Datei soll sein eigenes Sheet bekommen und mit dateinamen benannt werden. Im Anschluss will ich aus deisen Sheets diverse zellen auslesen und in eine art tabelle auflisten (5 Werte pro datei in Zeilen nebeneinander).
Folgende Codes nutze ich bereits:
Dateien einfügen:
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "hier kommt pfad rein*.*"  'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.*"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Workbooks.OpenText Filename:=strFileName, DataType:=xlDelimited, Semicolon:=True
ActiveSheet.Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
End If
End Sub

und zum auslesen der Werte:
Sub Daten_auslesen_neu()
ThisWorkbook.Worksheets("Tabelle1").Range("d9") = ThisWorkbook.Worksheets("Test_06P").Range(" _
a19")
[d9] = Right(Range("D9"), 4)
ThisWorkbook.Worksheets("Tabelle1").Range("b9") = ThisWorkbook.Worksheets("Test_06P").Range(" _
a200")
[b9] = Right(Range("b9"), 9)
ThisWorkbook.Worksheets("Tabelle1").Range("c9") = ThisWorkbook.Worksheets("Test_06P").Range(" _
a201")
[c9] = Right(Range("c9"), 4)
ThisWorkbook.Worksheets("Tabelle1").Range("e9") = ThisWorkbook.Worksheets("Test_06P").Range(" _
a210")
[e9] = Right(Range("e9"), 7)
End Sub

beim einfügen tritt das Problem auf das ich a nur eine Datei "einfügen" kann und b das sich diese als extra excel-datei öffnet.
Mein auslesecode ist noch nicht so optimiert das ich alle eingefügten dateien auslesen könnte...
Könnt ihr helfen?

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

Betreff
Datum
Anwender
Anzeige
AW: ein Versuch
23.03.2017 20:22:58
Fennek
Hallo,
da ein kein Test-Scenario aufbauen möchte, hier eine Code aus dem Gedächtnis:
Annahme: alle .txt - Dateien eines Ordner sollen als Sheet eingefügt werden:

sub InsBlaue()
iPath = "c:\temp\" '
Wenn es passen sollte, ist von Hand zu speichern.
mfg
AW: ein Versuch
23.03.2017 21:02:04
Eric
Hi, danke für deine Antwort, aber mit dem Code tut sich nix (auch nach anpassen des pfades nicht)
ich dachte auch eher daran wie in meinem code das über eine manuelle auswahl des verzeichnisses auswählen zu können.
Trotzdem danke soweit
AW: Textdateien in excel einfügen mit vba
23.03.2017 21:06:20
Zwenn
Hallo Eric,
Deine Infos reichen leider nicht aus, um Dir vernünftigen Code zur Verfügung zu stellen. CSV-Dateien zu importieren ist grundsätzlich ziemlich einfach. Die Frage ist immer, was sind da für Daten drin?
Macht man keine Vorgaben für die Spaltenformate in den Tabellen, die die Daten aufnehmen, interpretiert Excel jede Zelle selbständig. Das kann z.B. dazu führen, dass eigentliche Zahlenwerte plötzlich als Datum auftauchen. Wenn Daten in der CSV Datei sind, die nicht dem Format des Systemdatums entsprechen (bei uns meist Deutsch Tag.Monat.Jahr), werden sie nicht richtig un nicht vollständig als Daten erkannt (z.B. wenn sie im US Format vorliegen Monat/Tag/Jahr). Du solltest also für jede zu importierende Spalte ein Format festlegen.
Ich nehme an, dass alle CSV Dateien gleich aufgebaut sind? Geht es Dir denn darum alle CSV-Dateien, die in einem Ordner sind zu importieren oder willst/ musst Du eine Auswahl treffen? Wenn sowieso alle CSV-Dateien importiert werden sollen, kannst Du Dir den Öffnen Dialog und die manuelle Auswahl sparen. Dann wird einfach nur der Ordner im Makro angegeben, aus dem alle CSV-Dateien eingelesen werden. Enden die auf .csv oder auf .txt?
Wenn Du jedes Tabellenblatt mit dem Dateinamen der CSV-Datei betiteln willst, muss dafür gesorgt werden, dass die Tabellennamen nur erlaubte Zeichen enthalten und die erlaubte Länge von 31 Zeichen nicht überschritten wird.
Der Teil mit der Übernahme von Daten aus den importierten Tabellen in eine "Sammel-Tabelle" funktioniert mit dem von Dir angegebenen Code nicht. Sieht so aus, als willst Du nur Teile aus bestimmten Zellen übernehmen. Eventuell musst Du dann auch für deine "Sammel-Tabelle" Spaltenformate festlegen.
Habe grade gesehen, dass Fennek Dir schon einen Code für den Import zur Verfügung gestellt hat. Damit kannst Du ja erstmal ausprobieren, ob der Teil so schon ausreicht oder doch noch Spaltenformate benötigt werden.
Viele Grüße,
Zwenn
Anzeige
AW: Textdateien in excel einfügen mit vba
23.03.2017 21:27:49
Eric
Hi,
gerne gebe ich mehr infos wenn benötigt.
Die Dateien sind eig alle gleich, ich benötige nur etwa 5-6 Werte daraus und möchte alle dateien importieren. Meine Werte sind aber nicht korrekt getrennt, das konnte ich aber mit dem Code zum auslesen beheben, nur läuft dieser nicht als schleife für mögliche weitere importierte sheets ab...
Es handelt sich hierbei um Messergebnisse dessen Pfad varieren kann und den möchte ich manuell festlegen.
Die Dateien haben eigentlich keine Endung, sie sind wie folgt bezeichnet: test.001...test.01A usw, ich glaube das Problem ist der "." hinter test.
Anzeige
AW: Textdateien in excel einfügen mit vba
23.03.2017 21:39:19
Zwenn
Fennek hat schon auf alle Dateien mit der Endung .txt gefiltert. Wenn Du das txt in seinem Code durch * ersetzt, werden alle Dateien genommen, egal auf was sie enden. Dann dürfen aber wirklich nur die zu importierenden Dateien im entsprechenden Verzeichnis sein, dass Du in Zeile 2 angepasst hast:

sub InsBlaue()
iPath = "c:\temp\" '

AW: Textdateien in excel einfügen mit vba
23.03.2017 21:52:11
Eric
hi, ja das hatte ich bereits getan, ahtte aber eienen fehler drin und ein * drin gehabt, konnte jetzt 240 dateien importieren ;)
Jetzt heißt leider jedes sheet: test(1) - test(241) und sie stehen am anfag der datei.
Sie sollten schon hinter tabelle 1 stehen.
Wie kann ich jetzt zum auslesen meinen code optimieren das der in einer schleife für alle sheets läuft?
Anzeige

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige