【发布时间】:2010-12-31 19:58:57
【问题描述】:
我已经阅读了一些相关主题,但仍然给我留下了这个问题。我想在 Access 数据库应用程序中编写一个函数,以编程方式从前两行开始导入 Excel 数据,即标题和单位分隔符。
我希望完成以下事情:
- 能够动态选择我要导入的 Excel 文件,可能使用对话框,也可能使用文件浏览器窗口。
- 在导入的每一行中插入“通用”数据 - 例如记录仪的资产编号和记录仪的指定位置。
- 从第 3 行而不是第 1 行开始导入 - 因为设备会自动将记录的标题和测量单位信息放在那里。
- 忽略工作表中的所有其他列 - 数据将始终存在于 A 到 G 列中,并且数据将始终从第 3 行开始。
这是 Excel 数据的常用格式(破折号表示数据):
日期 时间 温度 露点 湿球 GPP RH 摄氏度 摄氏度 摄氏度 克/公斤 % ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----我已经尝试了内置的 Access 'Get External Data' 功能,但它不会跳过第 2 行,并且 Excel 文件中的额外数据在尝试导入时会引发错误,从而停止其进程轨道。
我将是第一个承认在使用外部文件之前我从未尝试为 Access 编写导入函数的人,因此我有点新手。人们可以向我展示的任何帮助将永远不胜感激,我可以根据需要使用尝试的代码来更新它。提前感谢大家的帮助!
-- 编辑于 01/03/2011 @ 10:41 am--
阅读 Remou 提出的与 Excel 数据线程的 ADO 连接后,这是一些我认为可能可以完成工作的代码,但我不确定。
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
【问题讨论】: