我想使用此例程Application.GetOpenFilename
打开*.txt
文件或整个文件夹。这有点可能吗?
例如。如果没有选择文件/文件夹,则返回父文件夹路径,否则返回所选文件名?
示例:假设我在路径"test.txt"
中有一个名为C:\folder1\folder2\test.txt
的文件。现在,我在搜索文件时懒惰,并选择C:\folder1
(“父文件夹”)。我的程序现在在子文件夹中搜索test.txt
。但有时我并不懒惰,我想选择特定文件test.txt
我正在搜索一个用户友好的对话框来处理两个:打开文件夹(并仅返回文件夹路径)并打开文件(并返回文件路径)
答案 0 :(得分:1)
按parent
我假设您指的是调用VBA的文件。如果没有,你应该可以调整下面的相当容易。
Sub getFileorFolder()
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen = False Then fileToOpen = ThisWorkbook.Path
MsgBox "File is " & fileToOpen
End Sub
答案 1 :(得分:0)
我有更好的方法打开文本文件,但使用上面的答案之一。
Sub ImportTextFile()
'better method to retrieving Data from txt.
If Not Range("A2").Value = "" Then
MsgBox "Clear Data First"
Sheets("Input DATA").Select
Exit Sub
End If
fileToOpen = application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen = False Then fileToOpen = ThisWorkbook.Path
MsgBox "File is " & fileToOpen
With ActiveSheet.QueryTables.Add(connection:= _
"TEXT;" + fileToOpen, Destination:=Range("$A$2"))
'.name = "All"
.FieldNames = True
.RowNumbers = False
.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 = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Call RemoveEmptyRows
End Sub
Sub RemoveEmptyRows()
On Error Resume Next
Range("A2:A5000").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Resume:
Range("A2").Select
End Sub