所以我是使用访问/ VBA的新手,我无法让它工作。
Private Sub Get_File_Click()
Dim fdlg As Office.FileDialog
Dim pipe_file As Variant
Dim FileName As String
Dim file As String
Dim fn As Integer
' Clear contents of listboxes and textboxes. '
Me.OrigFile.RowSource = ""
Me.ConvertFile.RowSource = ""
Me.FileName = ""
' Set up the File dialog box. '
Set fdlg = Application.FileDialog(msoFileDialogFilePicker)
With fdlg
.AllowMultiSelect = False
' Set the title of the dialog box. '
.Title = "Select pipe delimited file"
' Clear out the current filters, and then add your own. '
.Filters.Clear
.Filters.Add "Text Files", "*.txt"
' Show the dialog box. If the .Show method returns True, the '
' user picked a file. If the .Show method returns '
' False, the user clicked Cancel. '
If .Show = True Then
file = fdlg
fn = FreeFile
Open file For Input As #fn
Do While Not EOF(fn)
Line Input #fn, pipe_file
Me.OrigFile.AddItem pipe_file
Loop
Else
MsgBox "You clicked Cancel in the file dialog box."
End If
End With
End Sub
这是我到目前为止所拥有的。 origFile是我试图将文本文件放入的列表框。 任何帮助表示赞赏 感谢
答案 0 :(得分:0)
我认为你的问题就在于行
file = fdlg
应该是
file = fdlg.SelectedItems(1)
答案 1 :(得分:0)
评论添加内联:
Private Sub Get_File_Click()
Dim fdlg As Office.FileDialog
Dim pipe_file As Variant
'Why two vars named 'FileName' and 'file'? Since they are both string, assuming just one of these will do.
Dim FileName As String
'Dim file As String
Dim fn As Integer
'Need variant variable to get file name
Dim varFile As Variant
Me.OrigFile.RowSource = ""
Me.ConvertFile.RowSource = ""
'Don't use ME here. Unless you have an object named FileName (which I'm not sure why you would in this case)
'Me.FileName = ""
FileName = ""
Set fdlg = Application.FileDialog(msoFileDialogFilePicker)
With fdlg
.AllowMultiSelect = False
.Title = "Select pipe delimited file"
.Filters.Clear
.Filters.Add "Text Files", "*.txt"
If .Show = True Then
'Never used this code before but this is how you get the file name:
'Seems lame to have three lines of code to get one file name, but I guess this is the way this control works
For Each varFile In .SelectedItems
FileName = varFile
Next varFile
'The invalid code below was causing the error and it is no longer necessary.
'However, also wanted to point out that you are already in a With block for fldg so the fdlg object is not required
'FileName = fdlg.SelectedItems
fn = FreeFile 'FreeFile = Good!
'Commented out the line below because file is not used
'Open file For Input As #fn
Open FileName For Input As #fn
Do While Not EOF(fn)
Line Input #fn, pipe_file
Me.OrigFile.AddItem pipe_file
Loop
'Make sure to close the file too!
Close #fn
Else
MsgBox "You clicked Cancel in the file dialog box."
End If
End With
End Sub
另外,最后一个提示,请确保在模块顶部声明了以下代码行:
Option Explicit
这可以防止您意外地错误地输入变量名称。
如果单击“工具/选项”,然后在“编辑器”选项卡中选择“需要变量声明”,则可以让VBA项目默认添加此行。