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

时间:2015-07-30 15:20:07

标签: vba excel-vba input excel-2013 excel

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

提前谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

在下面的代码中,我假设您在工作表上放置了一个按钮(名为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