将 Excel 表导入 Access 表?
Posted
技术标签:
【中文标题】将 Excel 表导入 Access 表?【英文标题】:Import Excel table into Access table? 【发布时间】:2021-09-13 06:45:24 【问题描述】:我正在尝试将 excel 中的指定表导入 Access。一旦用户将 Excel 电子表格中的数据转换为表格,我就知道数据应该是干净的,没有子标题和合并的单元格。但是,在使用 Sub
'''
Public Sub ImportExcelSpreadsheet(FileName As String, tableName As String, Range As String)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, FileName, True, Range
End Sub
'When I try to run the sub the values are as follows
ExcelImport.ImportExcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName), "tbl_IOList[#All]" 'Where tbl_IOList[#All] is the range
我在输入范围为“$A$1:$L$116”时已经成功,但它不适用于“tbl_IOList[#All]”
【问题讨论】:
您是否尝试将"tbl_IOList[#All]"
替换为Range("tbl_IOList[#All]").Address
?
【参考方案1】:
您当然可以将数据从 Access 插入 Excel。试试下面的代码反馈。
Sub InsertInto()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, row As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=C:\your_path\Test.accdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "tblYourTable", cn, adOpenKeyset, adLockOptimistic, adCmdTable
row = 3 ' the start row in the worksheet
Do While Not IsEmpty(Worksheets("Sheet1").Range("A" & row))
With rs
.AddNew ' create a new record
.Fields("ID") = Worksheets("Sheet1").Range("A" & row).Value
.Fields("Product") = Worksheets("Sheet1").Range("B" & row).Value
.Fields("ProdDate") = Worksheets("Sheet1").Range("C" & row).Value
.Update
End With
row = row + 1
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
这在 Excel 中运行,并将数据推送到 MS Access。如果您想从 Access 运行该过程,并从 Excel 导入,您可以尝试这样做。
Sub ImportDataFromExcel()
Dim rng As Range
Dim r As Long
Dim conn As ADODB.Connection
Dim strConn As String
Dim strSQL As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
"C:\your_path\Test.mdb"
Set conn = New ADODB.Connection
conn.Open strConn
With Worksheets("Sheet1")
lastrow = .Range("A2").End(xlDown).Row
lastcolumn = .Range("A2").End(xlToRight).Column
Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
End With
'therow = 1
For i = 2 To lastrow
'r = rng.Row
'If r > 1 Then
strSQL = "UPDATE PersonInformation SET " & _
"FName='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
"LName='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
"Address='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
"Age=" & Worksheets("Sheet1").Range("E" & i).Value & " WHERE " & _
"ID=" & Worksheets("Sheet1").Range("A" & i).Value
conn.Execute strSQL
'End If
'r = r + 1
Next i
conn.Close
Set conn = Nothing
End Sub
【讨论】:
这就是答案。但我的意思是,如果我通过选择范围并按 ctrl + T 将我的表格定义为“表格”。在 excel 中命名表格。假设我将其命名为 tblExcel。我如何使用在公式中存储为范围的 tblExcel 我不确定你在说什么。也许你可以问一个新问题。通常张贴之前的图片和之后的图片会有所帮助。以上是关于将 Excel 表导入 Access 表?的主要内容,如果未能解决你的问题,请参考以下文章
将 Access 表导入 Excel 表,而不将第一条记录作为 Access 字段标签
自动将不同的 Excel 文件导入 MS Access 2010 表