Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV per Dialog auswählen und importieren

CSV per Dialog auswählen und importieren
18.05.2014 18:00:25
Henner
Hallo zusammen,
ich möchte gerne das 1. Tabellenblatt (Ganz links, Name kann variieren) einer CSV Datei kopieren und in das Tabellenblatt "CSV.Import" meiner Arbeitsmappe einfügen. Das Auswählen der CSV Datei möchte ich mit einem Dialogfenster und per VBA lösen:
1. Dialogfenster öffnen
2. CSV Datei auswählen lassen, dann klick auf "Importieren"
3. Ausgewählte CSV Datei öffnen, 1. Tabellenblatt kopieren und wieder schliessen
4. Inhalt in Tabellenblatt "CSV.Import" meiner Arbeitsmappe einfügen
5. Den kompletten Dateipfad der importierten CSV Datei in Tabelle1 Zelle A1 schreiben.
Habe bei meinen Recherchen zwar einige Vorschläge gefunden, diese scheinen mir für meine Anforderungen aber schon fast zu aufwendig.
Vielen Dank im Voraus und einen schönen Sonntag! Henner

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV per Dialog auswählen und importieren
18.05.2014 19:25:58
Ewald
Hallo,
schau mal ob das paßt, hier wird zwar in eine Textbox eingelesen, aber das kannst du ja ändern
Sub Aufruf()
Dim intZeile  As Integer
Dim maxzeile As Integer
Dim intDatei  As Integer
Dim sfile     As String
Dim strText   As String
With ActiveSheet
Range("B3:G3").ClearContents
' .CheckBox1 = False
'.CheckBox2 = False
End With
sfile = Application.GetOpenFilename("Text Dateien (*.csv), *.csv")
If sfile = "Falsch" Then Exit Sub
maxzeile = ActiveSheet.Range("L5").Value 'Vorgabe wieviel Zeilen gelsen werden sollen
intDatei = FreeFile()
Open sfile For Input As #intDatei
ActiveSheet.TextBox1.Text = ""
Do Until EOF(intDatei)
intZeile = intZeile + 1         ' die gelesenen Zeile zählen
Input #intDatei, strText
If intZeile = maxzeile Then Exit Do   ' nur die vorgegebenen  Zeilen lesen
If strText  "" Then
If ActiveSheet.TextBox1.Text = "" Then
ActiveSheet.TextBox1.Text = strText
Else
ActiveSheet.TextBox1.Text = ActiveSheet.TextBox1.Text & Chr(10) & strText
End If
End If
Loop
Close #intDatei
End Sub
Gruß Ewald

Anzeige
AW: CSV per Dialog auswählen und importieren
18.05.2014 19:46:51
Henner
Hallo Ewald,
vielen Dank für Deinen Vorschlag. Grundsätzlich geht das schonmal in die richtige Richtung. Was noch fehlt wäre:
1. Das Dialogfenster soll im gleichen Pfad wie meine Arbeitsmappe geöffnet werden
2. Das Einfügen in mein Tabellenblatt will mir nicht gelingen
Irgendwie habe ich das Gefühl dass der Code auch mehr macht als er soll (Zeilen zählen etc), wäre es nicht einfacher gleich das komplette Blatt zu kopieren?
Danke & Gruss

Anzeige
AW: CSV per Dialog auswählen und importieren
18.05.2014 22:49:37
Ewald
Hallo Henner,
dann teste mal dies,es wird in Tabelle2 importiert.
Public Sub Importieren()
Dim Dateiname  As String
Dateiname = Application.GetOpenFilename(filefilter:="Textdateien (*.csv), *.csv")
If Dateiname = "Falsch" Then
Exit Sub
Else
Call Holen(Dateiname, ";")
End If
End Sub
Sub Holen(fname As String, Optional FS As String = ";")
Dim sfile    As Integer   ' Filehandle bzw. Dateinummer
Dim lAnzahl  As Long      ' Zähler über alle Zeilen
Dim OneLine  As String    ' eine Zeile als String
Dim myArr    As Variant   ' eine Zeile in Felder getrennt
ThisWorkbook.Worksheets("Tabelle2").Select 'Anpassen
Cells.ClearContents
sfile = FreeFile
Open fname For Input As #sfile
While Not EOF(sfile)
lAnzahl = lAnzahl + 1
Line Input #sfile, OneLine
If OneLine  "" Then         ' ist die Zeile NICHT leer?
myArr = Split(OneLine, FS) ' dann am Trennzeichen separieren
With Range(Cells(lAnzahl, 1), Cells(lAnzahl, UBound(myArr)))
.NumberFormat = "@"
.Value = myArr
End With
End If
Wend
Close #sfile
Columns("A:AZ").ColumnWidth = 10.78 ' die Spaltenbreite wiederherstellen
Cells.EntireColumn.AutoFit          ' die optimale Spaltenbreite herstellen
End Sub
Gruß Ewald

Anzeige
AW: CSV per Dialog auswählen und importieren
19.05.2014 13:21:29
Henner
Hallo Ewald,
vielen Dank für Deine Hilfestellung! Gruss

AW: CSV per Dialog auswählen und importieren
19.05.2014 07:28:42
Daniel
Hi
generell hat eine CSV-Datei immer nur ein Tabellenblatt, von daher ist deine Anforderung etwas verwirrend.
Ansonsten probiere mal diesen Code:
Sub CSV_Einfügen()
Dim Datei As String
ChDrive Left(ThisWorkbook.FullName, 1)
ChDir ThisWorkbook.Path
Datei = Application.GetOpenFilename("CSV, *.csv")
If Not LCase(Datei) Like "*.csv" Then Exit Sub
With Workbooks.Open(Datei, ReadOnly:=True, local:=True)
.Sheets(1).UsedRange.Copy _
ThisWorkbook.Sheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Cells(1, 1)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = .Sheets(1).Name
.Close False
End With
End Sub
Gruß Daniel

Anzeige
AW: CSV per Dialog auswählen und importieren
19.05.2014 12:59:23
Henner
Hallo Daniel,
das sieht schon sehr gut aus. Die einzige kleine Änderung die ich noch gerne hätte, wäre dass Excel kein neues Tabellenblatt einfügt sondern in das bestehende Blatt "CSV.Import" lädt. Wenn Du mir das noch anpassen würdest wäre ich sehr dankbar.
Nochmals vielen Dank & Gruss, Henner

Anzeige
AW: CSV per Dialog auswählen und importieren
19.05.2014 13:02:02
Daniel
Wenn das Sheet schon vorhanden ist, dann kannst du es auch einfach als Ziel bei der Copy-Funktion einfügen.
.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("CSV.Import").Cells(1, 1)
Gruß Daniel

AW: CSV per Dialog auswählen und importieren (ERL)
19.05.2014 13:20:46
Henner
Super, vielen Dank! Gruss
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CSV per Dialog auswählen und importieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei in Excel mit VBA auszuwählen und zu importieren, folge diesen Schritten:

  1. Öffne das VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub CSVImport()
    Dim Dateiname As String
    Dateiname = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv")
    If Dateiname = "Falsch" Then Exit Sub
    With Workbooks.Open(Dateiname, ReadOnly:=True, local:=True)
        .Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("CSV.Import").Cells(1, 1)
        .Close False
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Drücke ALT + F8, wähle CSVImport und klicke auf "Ausführen".

Jetzt solltest du in der Lage sein, eine CSV-Datei auszuwählen und deren Inhalt in das Blatt "CSV.Import" zu importieren.


Häufige Fehler und Lösungen

  • Fehler: "Falsch" wird zurückgegeben: Dies passiert, wenn du das Dialogfenster abbrichst. Stelle sicher, dass du eine gültige CSV-Datei auswählst.
  • Problem beim Zugriff auf das Tabellenblatt "CSV.Import": Vergewissere dich, dass das Blatt tatsächlich existiert und korrekt benannt ist.
  • CSV-Datei wird nicht korrekt importiert: Überprüfe, ob die CSV-Datei das richtige Format hat. Manchmal sind Trennzeichen unterschiedlich, z.B. ; statt ,.

Alternative Methoden

Es gibt verschiedene Ansätze, um CSV-Dateien in Excel zu importieren. Eine alternative Methode ist die Verwendung eines Textimports über die Excel-Oberfläche:

  1. Gehe zu Daten > Aus Text/CSV.
  2. Wähle die gewünschte CSV-Datei aus und klicke auf Importieren.
  3. Folge den Anweisungen des Importassistenten, um die Daten korrekt zu formatieren.

Zusätzlich kannst du auch Power Query verwenden, um CSV-Dateien zu importieren und zu transformieren.


Praktische Beispiele

Hier sind einige Beispielcodes, die dir helfen, CSV-Dateien mit VBA zu importieren:

  • Einfaches Einlesen einer CSV-Datei:
Sub EinfachCSVImport()
    Dim Dateiname As String
    Dateiname = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv")
    If Dateiname = "Falsch" Then Exit Sub
    Workbooks.Open Filename:=Dateiname
End Sub
  • CSV-Datei einlesen und in ein bestehendes Blatt importieren:
Sub ImportToExistingSheet()
    Dim Dateiname As String
    Dateiname = Application.GetOpenFilename("CSV-Dateien (*.csv), *.csv")
    If Dateiname = "Falsch" Then Exit Sub
    With Workbooks.Open(Dateiname, ReadOnly:=True)
        .Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("CSV.Import").Cells(1, 1)
        .Close False
    End With
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Teste deinen Code in einer sicheren Umgebung, um Datenverluste zu verhindern.
  • Nutze das Debugging-Tool im VBA-Editor, um Probleme schnell zu identifizieren und zu beheben.

FAQ: Häufige Fragen

1. Kann ich auch mehrere CSV-Dateien gleichzeitig importieren?
Ja, das ist möglich, indem du eine Schleife verwendest, die mehrere Dateien durchläuft und importiert.

2. Was ist der Unterschied zwischen Open und Workbooks.Open?
Open wird verwendet, um eine Datei im VBA zu öffnen, während Workbooks.Open speziell für das Öffnen von Excel-Arbeitsmappen gedacht ist.

3. Wie kann ich den Import von CSV-Dateien automatisieren?
Du kannst ein Makro erstellen, das automatisch beim Öffnen der Arbeitsmappe ausgeführt wird und die CSV-Datei importiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige