我试图通过单击我可以选择文件的Excel工具栏上的浏览按钮,所选文件的路径将显示在同一个Excel工作表的文本框中。这是我尝试过的代码:
Dim File_Path As Long
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
GetFolder = .SelectedItems(1)
TextBox1.Value = GetFolder
End With
End Sub
当我运行代码时,我能够选择一个文件,但后来我得到一个运行时错误“需要对象”和行
TextBox1.Value = GetFolder
正在突出显示。任何人请帮助我。谢谢。
答案 0 :(得分:1)
错误提示您在Activesheet中没有任何TextBox对象,或者Object引用未完成。
可能的解决方案(谈论ActiveSheet时):
ActiveSheet.TextBox1.Value = GetFolder
或在谈论任何其他表时:
Sheets("NameOfTheSheetHere").TextBox1.Value = GetFolder
答案 1 :(得分:0)
误解了这个问题。
这是另一种方式。
替换
TextBox1.Value = GetFolder
与
ActiveSheet.Shapes("Textbox1").OLEFormat.Object.Object.Text = getfolder
以更有条理的方式......
Sub Button2_Click()
Dim File_Path As Long
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Textbox1")
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
getfolder = .SelectedItems(1)
shp.OLEFormat.Object.Object.Text = getfolder
End With
End Sub
您也可以使用内置的Application.FileDialog(msoFileDialogOpen)
Application.GetOpenFilename
Private Sub CommandButton1_Click()
Dim Ret
Ret = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
If Ret <> False Then _
ActiveSheet.Shapes("Textbox1").OLEFormat.Object.Object.Text = getfolder
End Sub
如果您想要显示所有文件而不仅仅是Excel文件,请将BTW更改为"Excel Files (*.xls*), *.xls*"
至"All Files (*.*), *.*"
。