文件打开提示function代码不工作 – 不知道为什么

我有一个Sub ImportTest1()调用function文件(path)。 导入子似乎工作正常,但我不能确定,因为function部分不起作用,当涉及到设置QueryTable的东西打开文本文件到Excel工作表。 下面的代码是我现在所拥有的(粗体部分是不工作的位),我不确定那是什么错误。

Sub ImportTest1() Dim path As String 'CALL TO OPEN FILE DIALOG BOX path = opener() If path = "" Then Exit Sub End If 'CALL TO FILE OPEN FUNCTION files (path) End Sub Function opener() Dim sFile As String With UserForm1.CommonDialog1 .Filter = "All Files (*.*)|*.*" .ShowOpen If Len(.FileName) = 0 Then Exit Function End If sFile = .FileName End With Unload UserForm1 opener = sFile End Function Function files(path As String) Workbooks.OpenText FileName:="prt.", Origin:=xlWindows, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(1, 1, 1, 1, 1, 1) End Function 

我认为你可以简化你的代码很多,只是处理你想达到的目标。 从我之前的评论和原始文章中可以看出来的是,你要A.从用户检索文件名和path。 你可以用下面的方法做到这一点

 f = InputBox(Prompt:="Please enter a file path and name.") 

这会导致一个对话框popup,用户可以input一些文本。 f中存储的是一个表示文件名和path的string。 例如,用户可以input类似于C:\Users\Owner\Desktop\myFile.csv

如果你想打开存储在f中的那个文件,你可以尝试一些你已经有的东西

 Workbooks.OpenText Filename:=f, DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(1,1), Array(2,1), Array(3,1)) 

这假定一个3列逗号分隔的文件被input,但你可以修改它是任何你喜欢的。

总而言之,您可能只需要这四行vba代码来完成您想要完成的任务。 你可以把它放进一个子程序(不是函数),像这样

 Sub OpenMyFile() f = InputBox(Prompt:="Please enter a file path and name.") Workbooks.OpenText Filename:=f, DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(1,1), Array(2,1), Array(3,1)) ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(1, 1) ActiveWorkbook.Close False end sub 

我希望有帮助。