0

所以我试图使用用户表单来传递答案,作为在给定文件夹中搜索文件的一种方式。例如,这就是我想要做的。

选择文件 1 _ _

选择文件 2 _ _

按钮

我希望能够在文本框中输入文件路径,然后将它们作为参数传递给一个单独的宏,该宏会将数据加载到当前工作簿中。但是,我在任何地方都找不到有关此的任何信息。

有人可以展示这样的基本示例吗?


惊人的。我仍然对如何从用户表单传递它感到困惑。

所以我有

私有子 TextBox1_Change()

结束子

私有子 TextBox2_Change()

结束子

如何将答案指定为可以传递给 GetDataFromSelectedFile 宏的全局变量?


这是用户表单布局:

LabelTextBox1 文本框 LabelTextBox2 文本框

                   Command Button

用户表单下的子项:

Private Sub CommandButton1_Click() Call ProcessSelectedFile - 这与之前发布的 Call RemoveDups 相同 - 它的作用并不重要,因为它在
ProcessSelectedFile 实施后起作用 End Sub

Private Sub TextBox1_Change() 'ChDrive (sPath) ' 这是我不清楚你在做什么的地方 'ChDir (sPath) 'vOpen_File = Application.GetOpenFilename

结束子

私有子 TextBox2_Change()

结束子

基本上,如果您可以向我展示如何在用户表单中记录答案并将其传递给 ProcessSelectedFile,然后单击命令按钮执行这两个宏,它将起作用。

谢谢

4

2 回答 2

1

You should use the GetOpenFilename function for user friendliness:

ChDrive (sPath)
ChDir (sPath)
vOpen_File = Application.GetOpenFilename

Furthermore, if you want to verify a path on existence:

If fso.FolderExists(sPath) Then
    msgbox "File exists"
Else
    msgbox "File doesn t exist"
End If

Reference the library "Microsoft Scripting Runtime" for this. Do not use a global variable for this, it is unnecessary.

于 2012-06-07T13:19:14.320 回答
1

这应该让你指向正确的方向。

c:\killme我在名为workbook1.xlsxand的目录中设置了 2 个测试文件workbook2.xlsxA1我在两个文件的单元格中输入了不同的值Sheet1,保存并关闭了它们。

在第三个工作簿中,我添加了一个模块并添加了以下代码。

Option Explicit

Sub GetDataFromSelectedFile(sFile As String, sPath As String)
    ' Clear sheet before getting data from selected workbook
    ActiveSheet.UsedRange.Clear

    ' Get data from the selected workbook
    With Sheet1.Range("A1")
        .Formula = "= '" & sPath & "[" & sFile & "]Sheet1'!RC"
        .Value = .Value
    End With
End Sub

Sub ProcessSelectedFile()
    Dim SelectedFile As String
    Dim SelectedPath As String

    ' Set SelectedFile to value selected by user
    SelectedPath = "C:\killme\"
    SelectedFile = "workbook2"

    Call GetDataFromSelectedFile(SelectedFile, SelectedPath)
End Sub

将路径和文件传递给 GetDataFromSelectedFile,并且您所在的工作簿 Sheet1 上的范围 A1 将填充所选文件中的相应单元格。

于 2012-06-07T02:23:08.850 回答