2011-09-13 37 views
6

Sto tentando di importare un foglio di calcolo Excel in Access utilizzando un semplice codice VBA. Il problema che ho incontrato è che ci sono 2 fogli di lavoro nel file Excel e ho bisogno di importare il secondo foglio di lavoro. È possibile specificare il foglio di lavoro necessario nel codice VBA?Importare un foglio di lavoro Excel in Access utilizzando VBA

Private Sub Command0_Click() 

Dim dlg As FileDialog 
Set dlg = Application.FileDialog(msoFileDialogFilePicker) 

With dlg 
.Title = "Select the Excel file to import" 
.AllowMultiSelect = False 
.Filters.Clear 
.Filters.Add "Excel Files", "*.xls", 1 
.Filters.Add "All Files", "*.*", 2 

If .Show = -1 Then 
StrFileName = .SelectedItems(1) 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "COR Daily", StrFileName, True 
Else 
Exit Sub 
End If 
End With 

End Sub 

Devo impostare strFileName a 'StrFileName'&'.Worksheetname'? È questo lo schema di denominazione corretto per questo?

qualcosa di simile:

StrFileName = StrFileName & ".WorkSheetName" 

risposta

11

Passare il nome del foglio con il parametro Range del DoCmd.TransferSpreadsheet Method. Vedere la casella "Fogli di lavoro nel parametro Intervallo" nella parte inferiore della pagina.

Questo codice viene importato da un foglio denominato "temp" in una cartella di lavoro denominata "temp.xls" e memorizza i dati in una tabella denominata "tblFromExcel".

Dim strXls As String 
strXls = CurrentProject.Path & Chr(92) & "temp.xls" 
DoCmd.TransferSpreadsheet acImport, , "tblFromExcel", _ 
    strXls, True, "temp!" 
+0

qualcosa di semplice come un punto esclamativo può fare la differenza. Thanxs. –

+1

È necessario notare che, se la tabella di destinazione esiste già nel database di Access e ha la stessa struttura, i dati importati verranno aggiunti ad essa. – Aris

+0

Ora funziona m avendo la stessa struttura della tabella come in Excel ma ogni volta crea una nuova tabella –

Problemi correlati