将 VBA 代码输入直接放入 Excel WB

Placing VBA Code input into Excel WB directly

我已经编写了我的代码,但我必须在多个工作簿(每天一个)上使用它,以将数据传输到一个集体 excel 数据库中。我需要在代码中指定工作簿。我不会使用代码,而是使用没有经验的人,所以我想尽量减少复杂性。有没有办法在集体工作簿中创建一个单元格或按钮来指定用于代码的工作簿?这样任何使用它的人都只需要键入文件名并打开输入工作簿?类似于命令按钮,但具有可变输入。

提前致谢

Sub CommandButton1_Click()
Dim File1 As String 'Filename for open and save
Dim i As Integer
Dim SplitArray() As String 'Used to split filename

'Open File
        File1 = Application.GetOpenFilename(fileFilter:="Excel, *.xls; *.xlsx; *.xlsm", Title:="Select a File")
        If File1 <> "False" Then
            'Remove path
            SplitArray() = Split(File1, "\")
            i = UBound(SplitArray)
            File1 = SplitArray(i)
            On Error Resume Next
            If Workbooks(File1) Is Nothing Then
                'File not open
                Workbooks.Open File1
            Else
                'File already open
            End If
        Else
            Exit Sub
        End If
        'Activate and show windows
        On Error Resume Next
        Workbooks(File1).Worksheets(1).Activate
End Sub

我发现使用其他用户熟悉的表单最容易。 VBA 可让您调用标准 Windows 对话框,例如 Open File 对话框。对话 returns 一个字符串,它是工作簿的路径。然后您可以从该路径创建一个工作簿对象并对其执行常规操作。

在下面的代码中,我假设您已经在工作表上放置了一个按钮(称为 OpenWorkbookButton)并放置了用于调用对话、获取文件路径并在其中创建工作簿对象的代码OpenWorkbookButton_Click() 事件处理程序。这会将工作簿作为参数传递给执行常规操作的子例程,这样用户就不必看到工作簿处于打开状态或以任何方式进行交互。

Private Sub OpenWorkbookButton_Click()

    Dim wbPath As String
    wbPath = Application.GetOpenFilename _
                        (Title:="Please choose a file to open", _
                        FileFilter:="Excel Files *.xls* (*.xls*),")

    Dim wb As Workbook
    Set wb = Application.Workbooks.Open(wbPath)

    Call DoMyUsualOperations(wb)

End Sub