2017-03-21 5 views
0

Der folgende Code wird nach Textdateien suchen, aber ich möchte das gleiche Dialogfenster über den Ordner meiner aktuellen Datei öffnen. Wie würde ich das tun?Ich möchte das Dialogfeld öffnen, um nach einer Excel-Datei zu suchen und zu importieren

fName = Application.GetOpenFilename ("Textdateien (* .txt), * .txt")

Wenn fName = "false" Dann Sub Ausgang

With Sheets("data export").QueryTables.Add(Connection:="TEXT;" & fName, _ 
    Destination:=Worksheets("data export").Range("$A$1")) 
     .Name = "sample" 
     .FieldNames = True 
     .RowNumbers = True 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierNone 
     .TextFileConsecutiveDelimiter = True 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileOtherDelimiter = "" & Chr(10) & "" 
     .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, _ 
      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 
      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 
      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
End With 
+0

Warum funktioniert dieser Code nicht? Es sieht einfacher aus. Sub SelectFileGetAllSheetsSAS() Dim ds As String Dim fNameAndPath As Variant ds = ThisWorkbook.Name fNameAndPath = Application.GetOpenFilename (Filefilter: = _ "Excel-Dateien (* .xls), * .xls", Titel: =“ Wählen Sie Datei zum Öffnen ") Wenn fNameAndPath = False Dann Exit Sub Workbooks.Open Dateiname: = fNameAndPath Sheets.Copy nach: = Arbeitsmappen (ds) .Sheets (" Master-Datei ") End Sub –

Antwort

0

Sie können einen Dialog Suche haben für Ihre Excel-Dateien innerhalb eines bestimmten Pfades mit zwei Ansätzen:

- mit dem GetOpenFilename und Ändern Pfad mit ChDir:

Dim file 

'Set current path 
ChDir ActiveWorkbook.Path 

file = Application.GetOpenFilename("Excel Files, *.xls*") 

If file <> False Then 
MsgBox file 
End If 

- das File-Dialog verwenden und die Einstellung der InitialFileName Eigenschaft:

Dim file As String, fd As FileDialog 

Set fd = Application.FileDialog(msoFileDialogFilePicker) 

With fd 
    .InitialFileName = ActiveWorkbook.Path 
    .Filters.Clear 
    .Filters.Add "Excel files", "*.xls*" 
    .AllowMultiSelect = False 
    If .Show Then 
     file = .SelectedItems(1) 
     MsgBox file 
    End If 
End With 

Set fd = Nothing 

In beiden Beispielen ich alle Excel-Dateien gefiltert haben, darunter die 2007 und früher.

Verwandte Themen