从函数中选择带文件对话框的文件

时间:2018-02-20 13:55:03

标签: vba excel-vba excel

我尝试使用以下代码选择文件并将其路径和文件名写入文本框。我尝试使用代号为TESTAREA的工作表但我总是收到错误类型不匹配。

我使用以下程序来使用表格中的功能TEST_AREA(TESTAREA)表格名称(代码名称)

Private Sub CommandButton1_Click()
Call myFunctions.SelectFile(TESTAREA, "*.txt", TextBox1)
End Sub

这是功能

Function SelectFile(ByVal strSheetName As Worksheet, strFilterExt As String, strTextBox As TextBox)

    Dim fdo As Office.FileDialog
    Set fdo = Application.FileDialog(msoFileDialogFilePicker)
    With fdo
      .InitialFileName = AUTOMBS.path
      .AllowMultiSelect = False
      .Title = "Please select the file."
      .Filters.Clear
      .Filters.Add "All Files", strFilterExt
      If .Show = True Then
          strSheetName.strTextBox.Value = .SelectedItems(1)
      End If
   End With

End Function

你能帮助我,我错了吗?

1 个答案:

答案 0 :(得分:1)

这对我有用。我将 ActiveX TextBox 添加到 Sheet1 并使用了您的代码。它给了我一个类型不匹配,直到我改变了函数以取代MSForms.TextBox

Sub Test()
    Debug.Print GetName(Sheet1.TextBox1)
End Sub

Function GetName(tb As MSForms.TextBox)
    GetName = tb.Value
End Function

试试这个。我将其更改为Sub,因为您没有向Function返回任何内容!

Sub SelectFile(ByVal strSheetName As Worksheet, strFilterExt As String, strTextBox As MSForms.TextBox)

    Dim fdo As Office.FileDialog
    Set fdo = Application.FileDialog(msoFileDialogFilePicker)
    With fdo
      .InitialFileName = AUTOMBS.path
      .AllowMultiSelect = False
      .Title = "Please select the file."
      .Filters.Clear
      .Filters.Add "All Files", strFilterExt
      If .Show = True Then
          strTextBox.Value = .SelectedItems(1)
      End If
   End With

End Sub