文件打开提示功能代码不工作 - 不知道为什么
我有一个Sub ImportTest1()函数文件(路径)中调用。导入子似乎工作正常,但我不能确定,因为功能部分不起作用,当涉及到设置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
我认为你可以简化你的代码很多,只是处理你想达到的目标。从我在以前的评论和原文中可以看出的是,您将要到答。从用户检索文件名和路径。你可以用下面的方法做到这一点
f = InputBox(Prompt:="Please enter a file path and name.")
这会导致一个对话框弹出,用户可以输入一些文本。 f中存储的是一个表示文件名和路径的字符串。例如,用户可以输入类似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列逗号分隔的文件是输入,但你可以将其修改为任何你喜欢的。
总之,您可能只需要这四行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
我希望有帮助。
有很多混淆和疑问啊,谢谢你,这很容易。是否需要输入文件路径而不是所选文件?只是澄清和定义为:字符串或长或其他什么? – 2014-09-04 14:24:10
注意我编辑来纠正错字,所以使用编辑后的版本。这一小段代码假定用户将一起输入整个路径和文件名。看我的例子:'C:\ Users \ Owner \ Desktop \ myFileName.csv'。 – 2014-09-04 14:26:29
只是文件名:= f然后呢?我认为这会更加复杂,VBA过去几周让我很生气:)感谢您的帮助 – 2014-09-04 14:28:41
您的FieldInfo不需要采用二维数组的数组吗?我可能是错的,但我认为你需要'FieldInfo:Array(Array(0,1),Array(1,1),Array(2,1),等等)。至少我认为你会需要它当我使用记录宏来查找prt。文件数组是什么并且查看时,使用'Array(1,2,3等)'而不是'Array(1,1,1,...)'。 – 2014-09-03 15:39:44
那是我得到的那部分... – 2014-09-03 15:41:04
你说错误代码行是粗体,但我看不到粗体。错误说的是什么? – 2014-09-03 15:44:25