Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Bernd am August 28, 2018, 14:47:24 Nachmittag
-
Hallo,
folgende Aufgabe habe ich, wofür ich bis jetzt keine Lösung gefunden habe:
ich möchte per Button und VBA über "Daten einfügen aus Text" eine csv-Datendatei einlesen. Die ganzen folgenden Einstellungen sind ohne Frage in VBA hinzubekommen
ABER : die Datei kann unterschiedliche Namen haben und in verschiedenen Verzeichnissen abgelegt sein - also müsste ich das Excel-Menü "Datei öffnen" über VBA öffnen lassen, das Bild mit dem Datei-Explorer-Ausschnitt, um mir gezielt eine der vielen Datendateien auszusuchen.
Hat jemand eine Lösung mit Syntax dafür?
Gruß
Bernd
-
Moin,
sind Suchmaschinen deine Feinde? Ich habe eben >67.000 Ergebnisse bekommen, als ich eingegeben hab: Datei öffnen Dialog VBA und da wird bestimmt auch etwas für dich dabei sein; beispielsweise http://www.herber.de/forum/archiv/1184to1188/1184059_Dateiauswahlfilter_mit_FileDialog.html (http://www.herber.de/forum/archiv/1184to1188/1184059_Dateiauswahlfilter_mit_FileDialog.html)
-
Hallo,
soweit habe ich es schon mal hinbekommen. Der Pfad/die Datei wird übergegeben (wenn auch umständlich) - aber beim
Einlesen der csv nicht mehr erkannt ( VBA meckert : "...kann Datei nicht finden ..."). Also muss doch bei der
-QueryTables.Add- etwas schief laufen - der Pfad wird nicht erkannt. Muss der doch unter .name der Dateiname expliziert
aufgeführt werden? Die Datei sollte doch mit dem Pfad mit der -strFileName- doch übergeben werden ... oder ist das ein
Problem der Variablendeklaration oder Zeichen falsch gesetzt ... ?
------------------
Public Function CSV_Datei_einlesen()
Dim strFileName As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Add "CSV-Dateien", "*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
Cells(1, 1) = strFileName
End If
End With
End Function
Sub Einlesen()
Dim strFileName As String
CSV_Datei_einlesen
strFileName = Cells(1, 1)
Cells(2, 2).Select
With ActiveSheet.QueryTables.Add(Connection:="Text;strFileName", Destination:=Range("$B$2"))
.Name = "strFileName"
' .... all die Einzeleinstellung sind hier ausgeblendet
.Refresh BackgroundQuery:=False
End With
End Sub
------------------
Gruß
und Danke im Voraus
Bernd