繁体   English   中英

Excel2016上的getopenfilename VBA代码

[英]getopenfilename VBA code on Excel2016

我有一个VBA脚本来导入txt文件。 它在Excel 2013上运行良好。在excel 2016上,getopenfilename不再支持参数(excel崩溃)。 删除getopenfilename()的所有参数时,它可以工作

任何想法 ?

 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

我发现的解决方案是替换为

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM