如何从Excel文件中选择特定的工作表以导入到Access中?

时间:2019-08-28 14:15:10

标签: excel vba ms-access

在图像中,我显示了选择要导入的Excel文件的界面。

只要您在代码中输入工作表的名称,它就可以完美地工作:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "MYSTERY_SHOPPER", fileName, True, "Junio-2019!"

但是,我希望用户选择要导入的工作表(也许有一个输入框来捕获工作表的名称?),因为他不必每次都输入并编辑该行。

已解决-向@ June7致谢

'----------------- BUTTON BROWSE

Private Sub btnbuscar_Click()

Dim diag2 As Office.FileDialog
Dim Item2 As Variant

Set diag2 = Application.FileDialog(msoFileDialogFilePicker)
diag2.AllowMultiSelect = False
diag2.Title = "Choose a Excel file"
diag2.Filters.Clear
diag2.Filters.Add "Excel files", "*.xls, *.xlsx"
DoCmd.SetWarnings False

If diag2.Show Then
    For Each Item2 In diag2.SelectedItems
        Me.etiquetaarchivo = Item2
    Next
End If

End Sub


'---------------- BUTTON IMPORT

Private Sub btnimportar_Click()

Dim FSO2 As New FileSystemObject

If Nz(Me.etiquetaarchivo, "") = "" Then
    MsgBox "You don't select a file!"
    Exit Sub
End If

If FSO2.FileExists(Nz(Me.etiquetaarchivo, "")) Then

    ExcelImport2.ImportExcelSpreadsheet Me.etiquetaarchivo, FSO2.GetFileName(Me.etiquetaarchivo)
    DoCmd.SetWarnings False

Else
    MsgBox "Not file found!"
End If


'---------------- MODULE

Public Sub ImportExcelSpreadsheet(fileName As String, tableName As String)
On Error GoTo BadFormat

Dim Hoja As String
Hoja = inputbox("Input the sheet name")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "MYSTERY_SHOPPER", fileName, True, Hoja & "$"
    DoCmd.SetWarnings False
    Exit Sub

BadFormat:
    MsgBox "The format isn't correct"
End Sub

1 个答案:

答案 0 :(得分:0)

使用Range参数中的$字符连接用户文本框输入。

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "MYSTERY_SHOPPER", fileName, True, Me.tbxSheet & "$"

如果要指定范围和图纸,语法为:

"SheetName!A1:E10"

或使用范围名称

"SheetName!MyRange"