我已经阅读了一些相关主题,但仍然留下了这个问题。我想在 Access 数据库应用程序中编写一个函数,以编程方式导入从前两行(标题和单位分隔符)之前开始的 Excel 数据。
我希望完成以下任务:
- 能够动态选择我要导入的 Excel 文件,可能使用对话框或文件浏览器窗口。
- 在导入时将“通用”数据插入到每一行中 - 例如记录器的资产编号和记录器的指定位置。
- 从第 3 行(而不是第 1 行)开始导入 - 因为设备会自动将记录的标题和测量单位信息放在那里。
- 忽略工作表中的所有其他列 - 数据将始终出现在 A 至 G 列中,并且数据始终从第 3 行开始。
这是 Excel 数据的常见格式(破折号代表数据):
Date Time Temp Dew Point Wet Bulb GPP RH
Cº Cº Cº g/Kg %
---- ---- ---- ---- ---- ---- ----
---- ---- ---- ---- ---- ---- ----
我尝试过内置的 Access“获取外部数据”功能,但它不会跳过第 2 行,并且 Excel 文件中的额外数据在尝试导入时会引发错误,从而停止进程。
我首先承认,在使用外部文件之前,我从未尝试过为 Access 编写导入函数,因此我有点新手。人们可以向我提供的任何帮助将始终不胜感激,并且我可以根据需要使用尝试的代码来更新它。预先感谢大家的帮助!
-- 编辑于 01/03/2011 @ 10:41 am --
在阅读了 Remou 提出的 ADO 连接到 Excel 数据线程后,我认为这是一些代码might做这项工作,但我不确定。
Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String
strFile = fncOpenFile
If strFile = "" Then Exit Sub
With cnn2
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & strFile & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [Data$] WHERE G1 IS NOT NULL"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic
rs2.Open cmd2
您可以使用 TransferSpreadsheet :http://msdn.microsoft.com/en-us/library/aa220766(v=office.11).aspx http://msdn.microsoft.com/en-us/library/aa220766(v=office.11).aspx
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
"Employees","C:\Data\Test.xls", True, "A3:G12"
或者你可以使用 ADO 连接连接到 Excel https://stackoverflow.com/questions/2086234/query-excel-worksheet-in-ms-access-vba-using-adodb-recordset/2086626#2086626.
最简单的方法可能是导入或链接,然后使用查询用电子表格数据和通用数据更新相关表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)