【问题标题】:Excel internal database connectionExcel内部数据库连接
【发布时间】:2016-06-12 14:50:06
【问题描述】:

我构建了一个数据条目 UserForm 来填充将用作原始数据库的工作表。原始数据需要进一步处理和分析才能被报告,所以我使用 Get External Data>From Microsoft Query>Excel Files 建立了一个数据库连接,将其指向我已经在使用的文件,选择了我想要的字段并对我想要聚合的那些执行基本功能。这将创建一个 Excel 表,然后我在其中使用公式来完成分析。这对我很有效;我可以向数据库添加条目,刷新汇总表,添加新条目并自动填充公式。

问题是没有其他人可以刷新表,因为它正在本地查找文件。连接字符串是: DSN=Excel 文件;DBQ=C:\Users\MyName\Desktop\Folder 1\Results.xlsm;DefaultDir=C:\Users\MyName\Desktop\Folder 1;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;

我对数据库连接有非常基本的了解,但我需要根据同事的要求将此文件尽可能自动化。我可以修复连接字符串以使文件“灵活”并且可以在任何计算机上刷新吗?这是最好的解决方案吗?如果没有,我还能做什么不涉及下载其他插件或第 3 方加载项?

【问题讨论】:

  • 您有实际的数据库要连接吗?因为将所有内容都放在本地计算机上并不是一个好主意。
  • “数据库”只是同一个 Excel 文件中的一张工作表。
  • 您必须将原始数据分离到一个独立的、可通过网络访问的工作簿中,然后将带有用户表单的“工作”电子表格连接到公共“数据库”。
  • 假设您有一个每个人都可以访问的网络驱动器,这是最好的解决方案。 Excel 不在乎参考表是否在工作簿中。

标签: excel database-connection connection-string vba


【解决方案1】:

如果您需要一个包含原始数据的文件(一个数据库)和一个或多个连接到该文件的 Excel 文件,这些文件从数据库中提取数据并使用这些数据,您需要将这两件事分开。您可以使用位于共享目录中的访问文件和适当的表来创建数据库,并且可以在此文件中重现用户表单,以便在此文件中插入数据。然后连接一个或多个 excel 文件(使用连接 Mode = Share Deny None,这样您就可以更新数据并同时从 excel 文件中使用它们),数据将导入到表中的文件中,在这里您可以完成所有工作你需要的处理。

如果一个文件对您来说就足够了(您不需要有一个将行数据分开的数据库,也不需要同时使用来自不同位置的文件),那么所有的问题是,如果该文件是从与连接字符串中指定的位置不同的位置打开它不起作用...在这种情况下(似乎是这种情况)我不知道为什么要使用与同一文件的连接。
如果您需要使用的表格,只需使用您已插入的数据(Create a table - quick start guide)选择范围创建它,然后当您通过表单添加数据而不是将它们添加到“普通”行中时,添加将它们添加到带有 WorkSheets("name").ListObjects("table_name").ListRows.Add 之类的表的新行中,并将数据添加到新表行中。

【讨论】:

  • 这很延迟,所以我很抱歉。您的第二个建议是个好主意,我认为如果我改进了用户窗体中的 VBA,我可以管理它,但目前我必须使用 SQL 转换原始数据以提供汇总表,这就是我设置数据库的原因连接到原始数据。
猜你喜欢
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
相关资源
最近更新 更多