2017-11-17 13 views
0

私はtxtファイルをインポートするVBAスクリプトを持っています。 Excel 2013でうまく動作します。 Excel 2016では、getopenfilenameは引き数をサポートしていません(Excelのクラッシュ)。 getopenfilename()のすべての引数を取り除くと動作しますgetopenfilename Excel2016のVBAコード

ご存知ですか?私が見つけた

Sub Import_TXT() 
On Error GoTo Err1 

With Sheets("Sheet2").QueryTables.Add(Connection:= _ 
    "TEXT;" & GetTXT, Destination:=Sheets("Sheet2").Range("A1")) 
    .Name = "logexportdata" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = False 
    .SaveData = False 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 437 
    .TextFileStartRow = 1 
    .TextFileParseType = xlDelimited 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = False 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = True 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery:=False 
End With 

Exit Sub 

Err1: 
MsgBox "Data not imported. Error: " & Err.Number & vbCrLf & Err.Description 

End Sub 

Function GetTXT() As String 

Dim filename__path As Variant 


' Get the filename 
    filename__path = Application.GetOpenFilename(FileFilter:="TXT (*.txt), *.txt", Title:="Select txt file") 

If filename__path = False Then Exit Function 

GetTXT = filename__path 
End Function 
+0

によって置き換えることである、それはラインfilename__path = Application.GetOpenFilename(FileFilterの到達したとき、あなたはそのエクセルcrahesを言っている:= "TXT(* .TXT)、*を.txt "、Title:=" Select txt file ")?? – Storax

+0

はい、office2016とします。 –

答えて

0

ソリューションは

With Application.FileDialog(msoFileDialogFilePicker) 
.AllowMultiSelect = False 
.Filters.Clear 
.Filters.Add "Text file", "*.txt", 1 
.FilterIndex = 1 
.Title = "Select txt file" 
.Show 
filename__path = .SelectedItems(1) 
End With