Microsoft Access Runtime 2013 - 从Excel导入

时间:2014-02-27 18:51:01

标签: excel vba ms-access access-vba

我开发了一个Access数据库解决方案,它使用Excel自动化打开xls和xlsx文件,这样我就可以导入我需要的特定单元格。

现在我必须将我的软件部署到没有安装Office或Excel的用户,并且正在使用Runtime运行我的程序,我不能再使用自动化了。

有没有办法可以在没有Excel的情况下打开Excel文件,导入可以说是单元格B7和单元格E4?我不需要直接在表中导入它,而是在内存中使用xls的结果(就像我使用Excel对象一样)并稍后保存。

提前致谢。

2 个答案:

答案 0 :(得分:1)

由于某些(非常严重的)限制,可以使用Jet(即Access数据库引擎,其老化版本是标准Windows组件)来至少读取XLS文件。有关限制,请参见此处:

http://support.microsoft.com/kb/257819/en-gb

至于一个例子......

Function ReadCell(XLSFileName As String, SheetName As String, CellName As String)
  Dim DB As DAO.Database, RS As DAO.Recordset
  Set DB = DBEngine.OpenDatabase(XLSFileName, False, True, "Excel 8.0;HDR=No;")
  Set RS = DB.OpenRecordset("SELECT * FROM [" + SheetName + "$" + CellName + ":" + CellName "]")
  ReadCell = RS(0)
  RS.Close
  DB.Close
End Function

Sub Foo
   MsgBox ReadCell("C:\Users\ExeBat\Documents\Test.xls", "Summary Details", "C5")
End Sub

答案 1 :(得分:0)

我的猜测并非没有某种第三方库。如果文件存储为office open XML,你可能会将文件读作文本,我猜是MS默认加密/混淆你的标准xls / xlsx文件,所以你不能这样做。如果在所有情况下您的用户计算机上都没有Excel,您可能需要考虑使用其他格式(text,csv等)的源数据,我知道这可能不是一个理想的答案。