Private Function SelectFile(ByVal strFilter As String) As String
Dim FileName As Variant
'打开文件对话框返回的文件名,是一个全路径文件名,其值也可能是False,因此类型为Variant
Dim sFileName As String '从FileName中提取的文件名
Dim sPathName As String '从FileName中提取的路径名
Dim aFile As Variant '数组,提取文件名sFileName时使用
'调用Windows打开文件对话框
FileName = Application.GetOpenFilename(strFilter) ' "CSV 文件 (*.csv),*.csv"
If FileName = False Then '如果按“取消”键
SelectFile = ""
Else
aFile = Split(FileName, "\") '在全路径中,以“\”为分隔符,分成数据
sPathName = aFile(0) '取盘符
For i = 1 To UBound(aFile) - 1 '循环合成路径名
sPathName = sPathName & "\" & aFile(i)
Next
SelectFile = sPathName & "\" & aFile(UBound(aFile))
End If
End Function
Sub test()
Dim txt As Object
Dim lRow As Long
Dim text As String
Dim Filename As Variant
ChDir ThisWorkbook.Path
Filename = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "请选取档案", , MultiSelect:=True)
For Each fn In Filename
pge = pge + 1
lRow = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set txt = FSO.OpenTextFile(fn, ForReading, False)
Do Until txt.AtEndOfStream
lRow = lRow + 1
text = txt.ReadLine
ThisWorkbook.Worksheets(pge).Cells(lRow, 1) = text
Loop
txt.Close
Set txt = Nothing
Next
End Sub