2011-09-13 57 views
6

我正尝试使用一些简单的VBA代码将Excel电子表格导入到Access中。我遇到的问题是Excel文件中有2个工作表,我需要导入第二个工作表。是否可以在VBA代码中指定所需的工作表?使用VBA将Excel工作表导入Access

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 

我应该设置StrFileName到'StrFileName'&'.Worksheetname'?这是适当的命名方案吗?

类似:

StrFileName = StrFileName & ".WorkSheetName" 

回答

11

传递表名称与DoCmd.TransferSpreadsheet Method的范围参数。请参阅该页底部附近标题为“范围参数中的工作表”的框。

此代码从名为“temp.xls”的工作簿中名为“temp”的表导入,并将数据存储在名为“tblFromExcel”的表中。

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

像感叹号一样简单的事情可以使所有的差异。 Thanxs。 –

+1

您必须注意,如果目标表已经存在于Access数据库中并具有相同的结构,则导入的数据将被追加到它。 – Aris

+0

它现在工作m具有与excel相同的表结构,但每次创建新表时 –