如何解决MS Access 2016中Excel工作簿的无链接路径
SELECT * FROM MyTable IN 'S:\NetworkShare\Folder\MyAccessDB.accdb'
这为我提供了使用QueryDef对象控制任何记录集的路径(如果它发生更改)的优势。无需链接似乎更僵化,更不动态的表就可以做到这一点。
是否可以通过链接的Excel工作簿来做到这一点?
解决方法
您的QueryDef
可以采用以下格式:
SELECT * FROM [SheetName$Range] IN 'FilePath' [Excel 12.0 Xml;HDR=YES;IMEX=1]
或
SELECT * FROM [Excel 12.0 Xml;HDR=YES;IMEX=1;ACCDB=YES;DATABASE=FilePath].[SheetName$Range]
如果数据的第一行是标题,则HDR=YES
否则HDR=NO
IMEX
(导入导出模式)可以有3个values 0,1 and 2
- 0-导出模式(写)
- 1-导入模式(读取)
- 2-链接模式(读+写)
对于.xls
文件格式,直到Excel 2003为止都是Excel 97,请使用Excel 8.0
。
对于.xlsx
文件格式,Excel 2007及更高版本,请使用Excel 12.0 Xml
。
有关其他连接选项,请参见此site。
Range
是可选的,如果您的数据是固定的,则可以是A1:D50
。如果列是固定的,但行不是固定的,则可以使用A1:D
,直到最后一行。
例如
您的文件路径是C:\User\UserName\Data\File1.xlsx
和Sheet1
,并且第一行包含标题,那么您的QueryDef
可以是:
SELECT * FROM [Excel 12.0 Xml;HDR=YES;IMEX=1;ACCDB=YES;DATABASE=C:\User\UserName\Data\File1.xlsx].[Sheet1$]
或
SELECT * FROM [Sheet1$] IN 'C:\User\UserName\Data\File1.xlsx' [Excel 12.0 Xml;HDR=YES;IMEX=1]
也请参见此相关问题Import Excel spreadsheet into MS Access Database
,例如,您可以使用ADODB来达到类似的目的
Dim YourFilePath As String
YourFilePath = "Your\file\path"
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Dim objConnection As Object
Dim objRecordset As Object
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
Application.StatusBar = "Connecting To DataSource"
objConnection.Mode = 1
objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Mode=Read;" & _
"Data Source=" & YourFilePath & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;"";"
Application.StatusBar = "Querying DataSource"
'HERE IS YOUR SELECT QUERY
objRecordset.Open "Select * FROM [Sheet1$A1:Z10000]",_
objConnection,adOpenStatic,adLockOptimistic,adCmdText
Do Until objRecordset.EOF
Dim someCellValue as String
'GET YOUR DATA FROM HERE
someCellValue = objRecordset.Fields.Item("ColumnName")
'MOVE TO NEXT ROW
objRecordset.MoveNext
Loop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。