使用Excel作为Access数据库的前端(使用VBA)

2023-12-19

我正在为朋友构建一个小型应用程序,他们希望能够使用 Excel 作为前端。 (UI 基本上是 Excel 中的用户表单)。他们在 Excel 中有一堆数据,他们希望能够查询这些数据,但我不想使用 Excel 作为数据库,因为我认为它不适合该目的,并且正在考虑使用 Access。 [顺便说一句,我知道 Access 有其缺点,但可用预算为零,而且 Access 已经在朋友的电脑上使用了]

总而言之,我正在考虑将一堆数据转储到 Access 中,然后使用 Excel 作为前端来查询数据库并在用户窗体样式环境中显示结果。

问题:

  1. 使用 ADO / DAO 从 Excel 链接到 Access 有多容易?它的功能是否相当有限,或者我可以发挥创意吗?
  2. 我是否会付出性能损失(与使用 Access 中的表单作为 UI 相比)?
  3. 假设数据库始终使用 Excel VBA 中的 ADO / DAO 命令进行更新,这是否意味着我可以让多个 Excel 用户使用同一个 Access 数据库,而不会遇到任何并发问题等?
  4. 还有其他我应该注意的事情吗?

我有很强的 Excel VBA 技能,并且认为我可以很快克服 Access VBA,但之前从未真正完成过 Excel/Access 链接。我可以将数据硬塞进 Excel 并用作准数据库,但这似乎比其价值更痛苦(而且不是一个强大的长期解决方案)

任何建议表示赞赏。

Alex


我相信你会得到很多“不要这样做”的答案,我必须说,这是有充分理由的。这不是一个理想的解决方案......

话虽这么说,我以前也曾走过这条路(以及类似的路),主要是因为工作将其指定为硬性要求,而我无法绕过它。

对此需要考虑以下几点:

使用 ADO / DAO 从 Excel 链接到 Access 有多容易?它的功能是否相当有限,或者我可以发挥创意吗?

这是相当简单的。与使用其他工具做事相比,您受到的限制更大,因为 VBA 和 Excel 表单比大多数完整的编程语言有更多的限制,但没有任何东西会成为阻碍。它有效——有时有点难看,但它确实有效。在我上一家公司,我经常不得不这样做 - 偶尔会通过 Excel 中的 VBA 从 Access 和 Oracle 中提取数据。

我是否会付出性能损失(与使用 Access 中的表单作为 UI 相比)?

我的经验是,肯定有一个性能。这样做的惩罚。我从来不在乎(在我的用例中,事情足够小,这是合理的),但是使用 Excel Access 比直接在 Access 中工作要慢得多。部分取决于你想做什么......

就我而言,似乎绝对最慢(也是最痛苦)的事情是尝试根据 Access 数据填写 Excel 电子表格。这并不有趣,而且通常非常慢。如果您必须走这条路,请确保在 Excel 隐藏/不可见的情况下执行所有操作,否则重绘绝对会杀了您。

假设数据库始终使用 Excel VBA 中的 ADO / DAO 命令进行更新,这是否意味着我可以让多个 Excel 用户使用同一个 Access 数据库,而不会遇到任何并发问题等?

您几乎使用 Excel 作为客户端 - 与使用 WinForms 应用程序或任何其他工具的方式相同。 Access 的 ADO/DAO 客户端非常好,因此您可能不会遇到任何并发问题。

话虽如此,Access 的扩展性并不好。如果您有 2 或 3 个(甚至 10 个)用户,这非常有用。如果你有 100 个,你可能会遇到问题。另外,我倾向于发现 Access 需要定期维护才能避免出现损坏问题。必须定期备份 Access DB。根据我的经验,定期压缩访问数据库将有助于防止数据库损坏。

还有其他我应该注意的事情吗?

你正在以艰难的方式做这件事。使用 Excel 访问 Access 比直接使用 Access 要做更多的工作。

我建议您研究一下 Access VBA API - 其中大部分与 Excel 相同,因此您的学习曲线会很小。不同的部分只会让这变得更容易。您还将拥有 Access 报告和表单的所有优势,它们比 Excel 中的报告和表单更加面向数据。报告对于此类事情非常有用,从长远来看,拥有宏和报告将使生活变得更轻松。如果用户要使用表单来管理所有内容,则在 Access 中执行表单将与在 Excel 中执行表单非常非常相似,并且看起来几乎相同,但将使一切更快、更流畅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Excel作为Access数据库的前端(使用VBA) 的相关文章

  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • VBA (Excel) 中 =Empty 和 IsEmpty() 有什么区别?

    我使用了以下 VBA 代码 Do While Cell i 1 lt gt Empty doing things i i 1 Loop 在 Excel 中迭代列 具有双精度 整数值 然后我发现了一种情况 每当单元格的值为 0 时 测试的计算
  • Excel 的 VBA - 如何检查范围的交集不为空

    我有两个问题 1 如何检查交集或范围是否不为空 例如 如果我想检查它是否为空 我会写 if application intersect r1 r2 is nothing 但有什么东西是否定虚无的吗 例如 并非没有任何事情不起作用 2 如何比
  • 插入行而不选择任何内容?

    我正在使用 VBA 希望在特定位置插入一行而不选择它 我遇到的问题是 选择该行后 当脚本运行完毕时 电子表格会向下滚动到该行 我希望能够在不将电子表格向下滚动到插入行的情况下执行此操作 Rows i i Select ActiveCell
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 循环浏览文件夹中的工作簿

    我正在尝试从文件夹中的所有工作簿复制某些单元格 下面的代码仅循环遍历第一个文件 VBA 新手 欢迎任何帮助 提前致谢 Sub Get Data Dim Directory As String Dim Filename As String D
  • 如何从另一个工作簿(excel)复制数据?

    我已经有一个可以创建工作表和其他一些东西的宏 创建工作表后 我是否想调用另一个宏 将数据从第二个 Excel 其打开 复制到第一个活动 Excel 文件 首先 我想复制到标题 但我无法让它工作 不断出现错误 Sub CopyData she
  • 如何使用Excel的墨迹工具添加手写签名?

    我想在我公司的一些表格中添加手写数字签名 目标是选择一个文档 添加签名 通过使用绘图板 这可以使用 Excel 的墨水工具完成 并将文件作为 PDF 存储在服务器中 这将消除打印然后扫描表格以获得签名的必要性 我使用 Excel 作为文件操
  • VBA 中的 If 和 Or 多个语句

    我想将包含 14 列的 Excel 文件重新分配到正确的列 包含 12 000 行 为此 我必须使用一些 If And Or 语句将数字放入矩阵中 但显然我没有从中得到正确的东西 它使我的所有单元格为零 而具有值的单元格应保留该值 我哪里出
  • 将 Excel 数字日期重新格式化为 R 日期

    希望将从 Excel 中提取的列重新格式化为包含数字 Excel 格式 例如 40182 的数据框 as date 40182 origin 1899 12 30 format b Y Returns 1 2070 年 1 月 5 日 我正
  • 从 CSV 中去除额外的文本限定符

    我有一个 CSV 其中某些字段由 符号分隔作为文本限定符 参见下面的例子 请注意 每个整数 例如 1 2 3 等 都应该是一个字符串 合格的字符串被 符号包围 1 2 3 qualifiedString1 4 5 6 7 8 9 10 11
  • 在单元格中查找以逗号分隔的多个值并返回以逗号分隔的多个值

    如果有人可以帮忙的话 我们将此表称为 1 我想在此处执行查找 可以将工作表 2 中 B 列的值引入工作表 1 中的 B 列 返回的多个值也应该用逗号分隔 我在这里尝试使用 textjoin 公式 但它搞砸的地方是 例如它将 A12 计为 A
  • 打开特定工作表上的 Excel 文件

    我有一个包含 5 个工作表的 Excel 文件 我想用 C 代码打开它 当它打开时 我希望激活第 3 页 我怎样才能做到这一点 像这样 using Excel Excel Application excelApp new Excel App
  • 64 位 pyodbc 是否可以与 32 位 MS Access 数据库对话?

    我正在使用 64 位 python anaconda v4 4 它运行 python v3 我有 MS Access 2016 32 位版本 我想使用 pyodbc 让 python 与 Access 对话 是否可以使用 64 位 pyod
  • 从 Excel VBA 调用 Bloomberg BQL 查询

    出于复杂的原因 我想在 VBA 中自动调用 Bloomi BQL 查询 我正在从 VBA 脚本更改 Excel 工作表中 BQL Query 公式的输入 并调用 Application Calculate 来运行查询 显示更改为 N A 请
  • 绘制持续时间图表

    从我在写这篇文章之前所做的阅读中 我相当确定我需要创建甘特图 但我不知道这是否是正确的路线 需要将开始时间和结束时间的数据作为一个单位绘制在 Excel 图表上 Y 轴为日期 X 轴为一天中的小时 开始时间和结束时间的格式是 Excel 数
  • VBA Excel如何在文本框中写入Excel公式

    如何将Excel公式放入文本框中 我尝试过这样的事情 Sub CivBox With ActiveSheet Shapes Civils 3 Copy C26 Activate Paste Shapes Shapes Count Name
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 自动电子邮件生成无法解析多个收件人

    我有一个 VBA 脚本 可以创建并保存草稿电子邮件 为了添加收件人 它从链接的 Excel 表中提取一个字符串并将其添加到 Recipients 对象中 对于只有单一收件人的电子邮件 这就像一个魅力 用户所需要做的就是打开草稿 花 5 秒钟
  • VBA在下一个空白行正确输入用户表单数据

    创建了一个用户表单 添加了一个文本框和一个组合框 添加了提交按钮 单击 提交 后 会将数据添加到电子表格中 据我所知和我所读到的 这是错误的 ActiveCell Value TextBox3 Text ActiveCell Offset

随机推荐

  • 制作 Twitter wordcloud 时运行“tolower”后出现有趣错误

    尝试从 Twitter 数据创建词云 但出现以下错误 Error in FUN X 72L invalid input xxx bla bla bla http t co 56Fb78aTSC in utf8towcs 运行 mytwitt
  • 禁用输出转义不适用于 xslt 中的属性

    我有以下 xml 节点
  • 如何在 Android 中管理可运行任务队列

    我有多个任务 可运行 即从互联网下载图像 它们是当用户滚动 Android 应用程序中的列表时生成的 我无法控制一次生成多少个任务 Runnable 这可能是 100 个 但我只想并行执行 n 10 个任务 因此 我计划构建一个设计 一旦生
  • 始终隐藏虚拟键盘

    实际上我有一个编辑文本 当我单击编辑文本虚拟键盘弹出窗口时 但我只是想即使在单击编辑文本后也始终隐藏虚拟键盘 并且编辑文本应该可以使用系统键盘打印 我该怎么做 我的代码 EditText edtNote EditText findViewB
  • MS Access 触发器?

    我在 MS Access 中有两个名为 Insert Record 和 Delete Record 的表 两个表具有相同的字段 但一个表有记录 而另一个表没有记录 问题 我希望 每当我从表 Insert Record 中删除任何记录时 整个
  • 在 Android L 上运行本机库错误:仅支持位置无关的可执行文件 (PIE)

    当我在 Android L Nexus 5 上运行本机代码时 出现错误 错误 仅支持位置无关的可执行文件 PIE 相同的代码在我的 Samsung Galaxy S3 Android 4 3 上正确执行 这是我的Application mk
  • 是否有“全包同级”CSS 选择器之类的东西?

    My HTML p Doggies p p class green guys Froggies p p Cupcakes p p Piggies p 一个全包兄弟选择器 正如我希望的那样 当用于选择 green guys 的兄弟姐妹时 将选
  • Firebase 和 React 的 useEffect 清理功能

    我有一个问题 我的 useEffect 导致以下警告 无法对已卸载的组件执行 React 状态更新 这是一个空操作 但它表明应用程序中存在内存泄漏 要修复此问题 请取消 useEffect 清理函数中的所有订阅和异步任务 仅当从该组件处于活
  • 如何在 Qt 项目中包含 OpenSSL

    我是 Qt 的新手 我已经做了一些谷歌搜索 但找不到足够详细的答案 我需要在基于 qmake 的 Qt 项目中使用 OpenSSL 我如何下载 安装 链接它 以便我可以执行包含语句并在我的代码中使用它的功能 假设使用 Windows 您可以
  • 通过引用传递 std::string 数组

    我想创建一个不通过引用传递 std string 进行修改的函数 void changeStr std string str str Hello World 而是一个完整的 固定大小的 std strings 数组 该函数将执行完全相同的操
  • AngularJS - 当另一个范围内的键为 true 时更改范围值

    我有一个像这样的 ng repeat li p car model p span span span X span li 基于此 scope cars scope cars model Ford check true model Honda
  • 使用本机登录页面的登录凭据实施 Oauth2

    我正在尝试实现基于 Oauth2 的 Web 服务 我有 clientID clientSecret 授权端点 令牌端点和回调 Url 自定义架构指向 android 本机页面 当我检查其他基于 Oauth2 的 API 时 它有登录 Ur
  • 为乒乓球游戏的神经网络寻找正确的参数

    我在 Pong 游戏中实现深度神经网络时遇到了一些麻烦 因为无论我更改哪些参数 我的网络总是发散 我玩了一个 Pong Game 并实现了一个基于 theano lasagne 的深度 q 学习算法 该算法基于 Google Deepmin
  • 找不到存储过程,但可以执行它

    我是 SQL Server 新手 创建了我的第一个存储过程 它执行得很好 我可以在 可编程性 存储过程 下找到它 因此我弹出一个新查询并输入以下语句 use name of database exec name of stored proc
  • 如何对甘特条进行聚类而不重叠?

    使用 create gantt 我有重叠的开始日期和结束日期 import plotly plotly as py import plotly figure factory as ff import plotly df dict Task
  • 获取应用服务器下的真实(虚拟)主机名

    我有一个在 Jetty 下运行的应用程序 我希望该应用程序返回自引用绝对 URL 生成 RSS 提要时 因此客户端必须能够在没有 当前 URL 上下文的情况下工作 问题是我事先不知道应用程序将部署在哪个主机名下 而且很可能它将部署在多个主机
  • 通过 Powershell 为另一个用户设置环境变量

    我正在尝试从管理员用户 ABC 的 powershell 设置用户 XYZ 的环境变量 我正在使用 Start Process 启动用户 XYZ 的 powershell 但我无法捕获输出 所有这些过程都需要用Java来完成 有人可以帮我吗
  • 将对象实例添加到 gradle 插件扩展

    我有类似下面的插件 其中有一个外部命名空间 其中有一个 具体 实例 mother 一个对象加上另一个集合 children family mother firstname John lastname Cleese children son
  • Spring bean 的标准命名

    有人知道应用程序上下文中 Spring bean 的标准命名吗 我使用了驼峰命名法 但我不确定是否存在一种标准 我在网上搜索了相关内容 但没有找到任何东西 Bean 命名约定 Spring 框架参考第 1 3 1 节 https docs
  • 使用Excel作为Access数据库的前端(使用VBA)

    我正在为朋友构建一个小型应用程序 他们希望能够使用 Excel 作为前端 UI 基本上是 Excel 中的用户表单 他们在 Excel 中有一堆数据 他们希望能够查询这些数据 但我不想使用 Excel 作为数据库 因为我认为它不适合该目的