如何允许用户使用组合框选择他们希望导入访问的Excel工作表?

时间:2017-08-23 03:37:04

标签: excel vba ms-access access-vba

我创建了一个userform,用于将单个Excel工作表导入特定的Excel表。但是,我需要导入的工作簿包含多个工作表,即每个工作表上的每月31天。有没有办法在用户表单上创建一个组合框,以允许用户使用VBA选择他们希望导入到访问表中的工作表?

这是我的代码:

Private Sub btnBrowse_Click()
    Dim diag As Office.FileDialog
    Dim item As Variant

    Set diag = Application.FileDialog(msoFileDialogFilePicker)
    diag.AllowMultiSelect = False
    diag.Title = "Please select an Excel Spreadsheet"
    diag.Filters.Clear
    diag.Filters.Add "Excel Spreadsheet", "*.xls, *.xlsx"
    If diag.Show Then
        For Each item In diag.SelectedItems
            Me.txtFileName = item
        Next
    End If
End Sub

Private Sub btnImportSpreadsheet_Click()
    Dim FSO As New FileSystemObject

    If Nz(Me.txtFileName, "") = "" Then
        MsgBox "Please select a file!"
        Exit Sub
    End If
    If FSO.FileExists(Nz(Me.txtFileName, "")) Then
        If MsgBox("Do you want to import this file?", vbYesNo) = vbYes Then
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Dyeing", Me.txtFileName, True
            MsgBox "File Imported"
        Else
            MsgBox "Please select file again"
        End If
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

当用户选择xls文件时,您需要阅读所描述的工作表名称列表,例如here并将这些名称添加到组合框:创建一个行源类型为Value List的组合框并且将名称列表添加为由coma分隔的字符串到combobox RowSource属性。在AfterUpdate组合框事件中导入选定的工作表。使用TransferSpreadsheet函数的Range参数进行工作表选择。不要忘记将!添加到工作表名称的末尾:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Dyeing", Me.txtFileName, True, strSelectedWorksheetName & "!"