Excel可以使用自己作为数据库吗?

我在MSDN发现了一篇有趣的文章 ,其中说:

ADO可以将Excel工作簿看作是数据库。

那么Excel工作簿是否可以连接到自己 ,并将其工作表中的一个作为数据库表处理并对其执行查询? – 这可能通过VBA编程?

Excel可以将自己用作RDBMS吗?

不,但是可以将其用作不具有关系特性的“DBMS”。

那么Excel工作簿可以将自己用作数据库吗?

没有进入devise,DRI,B​​CP,HA等… 2大块:

  • 行限制
  • 文件被独占locking,不共享这么一个用户

评论后:

它是否支持关系模型是无关紧要的,它没有在RDBMS中预期的function:PK,FK,触发器,约束,默认等

在此基础上,我将如何唯一标识一行?

行号不:代理键仍然需要一个唯一的约束(在Excel中不支持)以确保自然键是唯一的。

这是可能的,但这将是一个非常糟糕的主意! 如果您需要数据库,您应该使用真实的数据库。 你想要的东西像数据types和索引和PK / FK的限制,并能够轻松地查询和限制放置在数据库中的信息种类。 我从来没有见过一个Excel电子表格,这些电子表格对真实数据库信息所需的数据有一定的限制,以保证数据的完整性。

是的,你可以使用DAO或ADO,从VBA中连接到一个Excel文件。 有时候是一个有用的技巧。 例如,我将摘要报告分发给几个用户,使用这个技巧,我可以在一个单独的表单中提供交易数据,而VBA提供从摘要到细节的深入分析。

有Microsoft支持页面,告诉你如何做到这一点。

你的链接显示ADO的基础知识。 这是我用的一个!

这是我使用DAO的例子中的代码。 你可以看到它是如何连接的,也是一个组装查询的例子。

Dim mPath As String Dim mName As String Dim ColcnT As Long Dim C As Long Dim RecCnt As Long Dim mPeriod As String mPath = ActiveWorkbook.Path mName = ActiveWorkbook.Name mPeriod = Range("mperiod") Dim dbtmp As dao.Database Dim tblobj As dao.TableDef Dim rs As Recordset Dim qd As dao.QueryDef Set dbtmp = OpenDatabase(mPath & "\" & mName, False, True, "Excel 8.0;") DoEvents If PeriodType = 1 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]) AND ((period)=[mperiod]))") If PeriodType = 2 Then Set qd = dbtmp.CreateQueryDef("", "SELECT * FROM mDrillDATA WHERE (((SubOwner1)=[msubowner]) AND ((ACC)=[mACC]))") qd.Parameters("msubowner") = mOwner qd.Parameters("mACC") = mACC If PeriodType = 1 Then qd.Parameters("mperiod") = mPeriod Set rs = qd.OpenRecordset(dbOpenDynaset)