Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datenimport mit Datei-öffnen Dialog

Datenimport mit Datei-öffnen Dialog
29.02.2016 23:25:00
EasyD
Hallo zusammen,
eine neuerliche Frage, denn ich verzweifle.
Ich weiß, das Thema ist schon mehrfach im Forum durchdiskutiert. Habe auch alles gelesen
und weitestgehend verstanden denke ich.
Trotzdem bekomme ich folgenden Code nicht zum laufen.
Ich möchte csv daten einlesen in die Tabelle import
das ganze natürlich über den Datei-Öffnen Dialog und nicht mit festem Quelldaten-Bezug
An der Stelle with ActiveSheet.QueryTables ... hängt er
bin dankbar für jede Fehlerkorrektur, ich blicke es nicht....
Sub Datenimport()
'Daten importieren in Zelle A1
'Datei öffnen-Dialog
Dim Datei As String
Datei = Application.GetOpenFilename(filefilter:="Textdateien (*.csv), *.csv")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "Keine Daten zum Import ausgewählt!", , "Abbruch"
Exit Sub
End If
Sheets("Import").Activate
With ActiveSheet.QueryTables.Add(Connection:=Datei, Destination:=Range("A1"))
.Name = "Importdatei"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport mit Datei-öffnen Dialog
29.02.2016 23:27:31
EasyD
hehe,
Ich weiß, das Thema ist schon mehrfach im Forum durchdiskutiert. Habe auch alles gelesen
offensichtlich habe ich da in anderen foren gelesen ;)

AW: Datenimport mit Datei-öffnen Dialog
01.03.2016 09:49:50
Luschi
Hallo EasyD,
Da Du sicher öfters per 'ActiveSheet.QueryTables.Add' Daten in die Tabelle 'Import'
einlesen willst, muß Du natürlich die (eventuell) vorhandenen alten Daten löschen!.
Das geht aber nicht so einfach, da diese Daten ja an ein Abfrage (QueryTable) gebunden sind;
Excel Zicken macht und diese Abfrage ist in eine 'intelligenten Tabelle' (iT) formatiert.
So kann man nicht einfach per Vba die Tabelle 'Import' abchecken, welche 'QueryTables' sie kennt,
sondern muß die iT darauf prüfen und diese 'QueryTables' dann löschen.
Eine Demodatei würde hier helfen, die entsprechende Vba-Befehle passend zu machen.
- kürze also die csv.Datei auf wenige Datensätze
- ändere die lebenswichtigen Informationen in anonyme, nichtssagenden Blablas
- die Datentypen je Spalten sollten aber passen
- lese die csv-Datei in eine leere Excel-Datei ein
- und stelle beide Dateien (xlsx & csv) hier in 1 zip-Datei bereit.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datenimport mit Datei-öffnen Dialog
01.03.2016 20:41:46
EasyD
Habe die Ehre Luschi
natürlich kannst du das ganze auch haben zum probieren, siehe die angehängte zip
allerdings ist da wirklich nicht mehr drin als in meinem Post oben beschrieben.
https://www.herber.de/bbs/user/104016.zip
Die Sache mit der Bindung der Daten an die Abfrage habe ich auch schon als mögliches Problem wahr genommen, konnte mir aber noch wirklichen keinen Reim drauf machen zumal man ja gefragt wird ob man die Abfrage erhalten möchte wenn man die importierten Daten raus löscht.
Der Plan war, zuerst den Import zu regeln und mit einem zweiten Befehl die importierten Daten dann wieder zu löschen und die Abfrage dann eben NICHT aufrecht zu erhalten.
Ich bin gespannt...

Anzeige
AW: Datenimport mit Datei-öffnen Dialog
03.03.2016 21:27:17
EasyD
Lösung nach viiieeel googeln...
Das Ding öffnet sogar automatisch den Dateipfad, in dem die Excel liegt....
Sub Test_import()
Sheets("Import").Activate
Dim sFile As String
Range("A:L").ClearContents
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.InitialFileName = ActiveWorkbook.Path & "\"
.Filters.Add "Textdateien", "*.csv", 1
.FilterIndex = 1
If .Show = -1 Then
sFile = .SelectedItems(1)
Else
'Abbrechen falls keine Datei ausgewählt
MsgBox "Keine Daten zum Import ausgewählt!", , "Abbruch"
Exit Sub
End If
End With
If sFile  "" Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & sFile, Destination:=Range("A1"))
.Name = "Importdatei"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datenimport über den Datei-Öffnen Dialog in Excel


Schritt-für-Schritt-Anleitung

Um Daten aus einer CSV-Datei in Excel zu importieren, kannst Du den Datei-Öffnen Dialog verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke auf Einfügen > Modul.

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub Datenimport()
       'Datei öffnen-Dialog
       Dim Datei As String
       Datei = Application.GetOpenFilename(filefilter:="Textdateien (*.csv), *.csv")
    
       'Abbrechen falls keine Datei ausgewählt
       If Datei = "Falsch" Then
           MsgBox "Keine Daten zum Import ausgewählt!", , "Abbruch"
           Exit Sub
       End If
    
       'Daten importieren in Zelle A1
       Sheets("Import").Activate
       With ActiveSheet.QueryTables.Add(Connection:=Datei, Destination:=Range("A1"))
           .Name = "Importdatei"
           .FieldNames = True
           .RowNumbers = False
           .FillAdjacentFormulas = False
           .PreserveFormatting = True
           .RefreshOnFileOpen = False
           .RefreshStyle = xlInsertDeleteCells
           .SavePassword = False
           .SaveData = True
           .AdjustColumnWidth = True
           .RefreshPeriod = 0
           .TextFilePromptOnRefresh = False
           .TextFilePlatform = 1252
           .TextFileStartRow = 1
           .TextFileParseType = xlDelimited
           .TextFileTextQualifier = xlTextQualifierDoubleQuote
           .TextFileConsecutiveDelimiter = False
           .TextFileTabDelimiter = True
           .TextFileSemicolonDelimiter = True
           .TextFileCommaDelimiter = False
           .TextFileSpaceDelimiter = False
           .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1)
           .TextFileTrailingMinusNumbers = True
           .Refresh BackgroundQuery:=False
       End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die CSV-Datei zu importieren.


Häufige Fehler und Lösungen

  • Fehler beim Import: Wenn der Import nicht funktioniert, prüfe, ob die CSV-Datei korrekt formatiert ist und die richtigen Trennzeichen verwendet werden.
  • Abbruchmeldung: Wenn die Meldung "Keine Daten zum Import ausgewählt!" erscheint, stelle sicher, dass Du eine Datei im Dialog ausgewählt hast.
  • Leere Zellen: Wenn nach dem Import leere Zellen angezeigt werden, überprüfe die TextFileColumnDataTypes und passe diese an die Struktur Deiner CSV-Datei an.

Alternative Methoden

Eine alternative Methode, um die Excel-Daten zu importieren, ist die Verwendung des FileDialog-Objekts. Hier ist ein einfaches Beispiel:

Sub Test_import()
    Dim sFile As String
    Range("A:L").ClearContents
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Filters.Add "Textdateien", "*.csv", 1
        If .Show = -1 Then
            sFile = .SelectedItems(1)
        Else
            MsgBox "Keine Daten zum Import ausgewählt!", , "Abbruch"
            Exit Sub
        End If
    End With

    If sFile <> "" Then
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sFile, Destination:=Range("A1"))
            ' Weitere Konfiguration wie oben
        End With
    End If
End Sub

Praktische Beispiele

  • Datenimport aus einer CSV-Datei: Verwende den oben beschriebenen Code, um Daten aus einer CSV-Datei in das Arbeitsblatt "Import" zu laden.
  • Datenimport in mehreren Arbeitsblättern: Du kannst den Import so anpassen, dass die Daten in verschiedene Arbeitsblätter importiert werden, indem Du die Destination-Parameter entsprechend veränderst.

Tipps für Profis

  • Automatisierung: Du kannst den Importprozess automatisieren, indem Du das Makro in ein Ereignis wie Workbook_Open einbindest.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsmechanismen, um unerwartete Probleme während des Imports zu vermeiden.
  • Datenbereinigung: Vor dem Import solltest Du sicherstellen, dass die CSV-Daten sauber sind, um Importfehler zu minimieren.

FAQ: Häufige Fragen

1. Wie öffne ich den Datei-Öffnen Dialog in VBA?
Du kannst den Datei-Öffnen Dialog mit Application.GetOpenFilename oder Application.FileDialog(msoFileDialogFilePicker) öffnen.

2. Was muss ich tun, wenn ich mehrere CSV-Dateien importieren möchte?
Du kannst eine Schleife verwenden, um über mehrere Dateien zu iterieren und jede Datei einzeln mit dem Importcode zu verarbeiten.

3. Welche Excel-Version benötige ich für den VBA-Code?
Der bereitgestellte VBA-Code sollte in den meisten aktuellen Excel-Versionen (Excel 2010 und höher) funktionieren.

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