Microsoft Excel

Herbers Excel/VBA-Archiv

File Picker in Makro einbinden


Betrifft: File Picker in Makro einbinden von: dennse
Geschrieben am: 12.09.2019 12:19:46

Hallo,

ich wollte mal hier um Hilfe fragen. Ich hab mir mit einem Makrorekorder eine CSV Datei _ eingelesen und gleich fertig kompiliert in meine Excel eingefügt. Soweit kein Hexenwerk. Ich hätte es jetzt aber gerne das ich keinen "steifen" Pfad für meine CSV Datei habe, sondern mir den File über eine filepicker Funktion selber aussuchen kann, und er trotzdem die Komipilierung der CSV weiterhin übernimmt. Quasi den Filepicker nur dazwischen schiebe. Geht das? Hier im Anhang das Makro:

     Sub Makro2()
     '
     ' Makro2 Makro
     '
     
     '
         Sheets("Tabelle3").Select
         Range("A1").Select
         With ActiveSheet.QueryTables.Add(Connection:= _
             "TEXT;C:\Users\Home\Desktop\Neuer Ordner\20.csv", Destination:=Range("$A$1"))
             .Name = "20_1"
             .FieldNames = True
             .RowNumbers = False
             .FillAdjacentFormulas = False
             .PreserveFormatting = True
             .RefreshOnFileOpen = False
             .RefreshStyle = xlInsertDeleteCells
             .SavePassword = False
             .SaveData = True
             .AdjustColumnWidth = True
             .RefreshPeriod = 0
             .TextFilePromptOnRefresh = False
             .TextFilePlatform = 850
             .TextFileStartRow = 1
             .TextFileParseType = xlDelimited
             .TextFileTextQualifier = xlTextQualifierSingleQuote
             .TextFileConsecutiveDelimiter = False
             .TextFileTabDelimiter = False
             .TextFileSemicolonDelimiter = False
             .TextFileCommaDelimiter = True
             .TextFileSpaceDelimiter = False
             .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9)
             .TextFileTrailingMinusNumbers = True
             .Refresh BackgroundQuery:=False
         End With
         Range("A9:A26").Select
         Selection.Copy
         Sheets("Tabelle1").Select
         Range("F11").Select
         ActiveSheet.Paste
         Range("I15").Select
     End Sub

Das dick markierte soll dann durch die filepicker funktion ersetzt werden.

Vielen Dank :)
  

Betrifft: AW: File Picker in Makro einbinden von: 1712667.html
Geschrieben am: 12.09.2019 12:51:25

Hallo,

z.B. so:

 Dim Datei As String
 
 With Application.FileDialog(msoFileDialogOpen)
     .AllowMultiSelect = False
     .Show
     Datei = .SelectedItems(1)
 End With
 
 Sheets("Tabelle3").Select
     Range("A1").Select
     With ActiveSheet.QueryTables.Add(Connection:=Datei, Destination:=Range("$A$1"))
         .Name = "20_1"
         .FieldNames = True
         .RowNumbers = False
         .FillAdjacentFormulas = False
         .PreserveFormatting = True
         .RefreshOnFileOpen = False
         .RefreshStyle = xlInsertDeleteCells
         .SavePassword = False
         .SaveData = True
         .AdjustColumnWidth = True
         .RefreshPeriod = 0
         .TextFilePromptOnRefresh = False
         .TextFilePlatform = 850
         .TextFileStartRow = 1
         .TextFileParseType = xlDelimited
         .TextFileTextQualifier = xlTextQualifierSingleQuote
         .TextFileConsecutiveDelimiter = False
         .TextFileTabDelimiter = False
         .TextFileSemicolonDelimiter = False
         .TextFileCommaDelimiter = True
         .TextFileSpaceDelimiter = False
         .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9)
         .TextFileTrailingMinusNumbers = True
         .Refresh BackgroundQuery:=False
     End With
     Range("A9:A26").Select
     Selection.Copy
     Sheets("Tabelle1").Select
     Range("F11").Select
     ActiveSheet.Paste
     Range("I15").Select
 
Gruss Torsten
  

Betrifft: AW: File Picker in Makro einbinden von: 1712668.html
Geschrieben am: 12.09.2019 12:53:24

Hallo,

Sub Makro2()
  Dim strFile As String
  With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = False
    If .Show = -1 Then strFile = .SelectedItems(1)
  End With
  If strFile <> "" Then
    Sheets("Tabelle3").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & strFile, Destination:=Range("$A$1"))
      .Name = "20_1"
      .FieldNames = True
      .RowNumbers = False
      .FillAdjacentFormulas = False
      .PreserveFormatting = True
      .RefreshOnFileOpen = False
      .RefreshStyle = xlInsertDeleteCells
      .SavePassword = False
      .SaveData = True
      .AdjustColumnWidth = True
      .RefreshPeriod = 0
      .TextFilePromptOnRefresh = False
      .TextFilePlatform = 850
      .TextFileStartRow = 1
      .TextFileParseType = xlDelimited
      .TextFileTextQualifier = xlTextQualifierSingleQuote
      .TextFileConsecutiveDelimiter = False
      .TextFileTabDelimiter = False
      .TextFileSemicolonDelimiter = False
      .TextFileCommaDelimiter = True
      .TextFileSpaceDelimiter = False
      .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9)
      .TextFileTrailingMinusNumbers = True
      .Refresh BackgroundQuery:=False
    End With
    Range("A9:A26").Select
    Selection.Copy
    Sheets("Tabelle1").Select
    Range("F11").Select
    ActiveSheet.Paste
    Range("I15").Select
  End If
End Sub
Gruß
Rudi
  

Betrifft: AW: File Picker in Makro einbinden von: 1712670.html
Geschrieben am: 12.09.2019 12:58:08

Hallo dennse,

nachfolged dein Makro ergänzt um den Dateiauswahl-Dialog

LG
Franz

' Makro2 Makro
'
    Dim varFile As Variant
'
    With Application.FileDialog(msoFileDialogOpen)
        .FilterIndex = 6 'txt, csv und prn
        .Title = "Bitte CSV-Datei auswählen,die importiert werden soll"
        If .Show = -1 Then
            varFile = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    Sheets("Tabelle3").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & varFile, Destination:=Range("$A$1"))
        .Name = "20_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierSingleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("A9:A26").Select
    Selection.Copy
    Sheets("Tabelle1").Select
    Range("F11").Select
    ActiveSheet.Paste
    Range("I15").Select
End Sub

  

Betrifft: das geht schief, ... von: 1712671.html
Geschrieben am: 12.09.2019 12:58:21

Hallo,
…wenn er auf Abbrechen klickt.

Gruß
Rudi

  

Betrifft: Ich hoffe, du hast auch einen Löschcode für Query von: 1712702.html
Geschrieben am: 12.09.2019 15:20:44

dennse,

denn wenn du immer nur neue Querytables addierst, bleiben die erhalten und blasen deine XL Datei unnötig auf. Du brauchst ja vermutlich nur die Daten der neuesten eingelesen. Code-Vorschläge und Anleitungen findest du im Archiv.

Gruess Hansueli

Beiträge aus dem Excel-Forum zum Thema "File Picker in Makro einbinden"