我创建了一个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
答案 0 :(得分:1)
当用户选择xls文件时,您需要阅读所描述的工作表名称列表,例如here并将这些名称添加到组合框:创建一个行源类型为Value List
的组合框并且将名称列表添加为由coma分隔的字符串到combobox RowSource
属性。在AfterUpdate
组合框事件中导入选定的工作表。使用TransferSpreadsheet函数的Range参数进行工作表选择。不要忘记将!
添加到工作表名称的末尾:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Dyeing", Me.txtFileName, True, strSelectedWorksheetName & "!"