选择文件并显示路径时出现“需要对象”错误

时间:2014-01-17 11:28:01

标签: excel excel-vba vba

我试图通过单击我可以选择文件的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

正在突出显示。任何人请帮助我。谢谢。

2 个答案:

答案 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 (*.*), *.*"