使用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) 的相关文章

  • 无法使用 RODBC 附加到具有自动编号列的表

    我正在尝试使用 RODBC 将新行插入到 Microsoft Access 数据库中的表中 问题是主键列是一个自动编号 它似乎不允许我省略此列 我正在使用带有append TRUE 的sqlSave 函数和带有单行的数据框 我已经尝试过以下
  • 将按颜色过滤的行复制到新工作表

    我有一个 Excel 电子表格 如下所示 Job1 Job2 Job3 Job4 Job5 Job1 Job2 Job3 Job4 Job5 每行和列之间的单元格颜色不同 我需要按橙色对每列进行排序 然后将行名称复制到新工作表中 所以最后我
  • 如何使用 SQL 查询在 Access 中的字段上设置验证规则?

    我正在使用 MS Access 2016 Office 365 目前遇到问题 下面是一个演示此问题的示例 这里我创建了一个表 名为节点家庭链接 由两个字段组成 NodeID 和 FamilyID 如下所示 现在 NodeID 是从另一个表
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • 使用 VBA 的下拉菜单

    我需要使用 VBA 从下拉菜单中选择特定选项 我怎样才能做到这一点 链接到我们试图从中提取的网页 IE document getElementsByName down count click 我尝试过的代码 Full Module Priv
  • 在 Excel 表格中选择多列的代码

    我是 Excel VBA 新手 我需要修改我的代码 以便我能够进一步进行 我想在 Excel 表格中选择多个表格列 这是我的代码 Dim ws As Worksheet Dim tbl As ListObject Set ws Sheets
  • 如何使用 Nodejs 创建 Excel 文件?

    我是一名 Nodejs 程序员 现在我有一个数据表 我想将其保存为 Excel 文件格式 我该怎么做呢 我找到了一些 Node 库 但其中大多数是 Excel 解析器而不是 Excel 编写器 我使用的是 Linux 服务器 因此需要一些可
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • 使用 MS Access 获取行的第一个实例

    EDITED 我有这个查询 我想SELECT表中记录的第一个实例petTable SELECT id pet ID FIRST petName First Description FROM petTable GROUP BY pet ID
  • 在合并的单元格中选择、插入照片并将其居中

    我是一名研发面包师 正在为我的团队制作食谱模板 模板中有照片 但我需要轻松地允许他们单击一个按钮 打开照片的文件选择器 然后将该照片放在合并的单元格中 我其实不太擅长做这个 Sub InsertPhotoMacro Dim photoNam
  • MS Access (Jet) 事务、工作区

    我在提交事务 使用 Access 2003 DAO 时遇到问题 它的表现就好像我从未调用过 BeginTrans 我在 CommitTrans 上收到错误 3034 您尝试在未先开始事务的情况下提交或回滚事务 并且更改将写入数据库 大概是因
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • JasperReports 中每个工作表属性一页

    我有一个要求 我必须在 JasperReports 中设计一个报告 该报告有 4 页 第一张纸有 5 页 类似的其他纸有一页或两页 我面临的问题是 如果我使用net sf jasperreports export xls one page
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • Excel 数字缩写格式

    这是我想要完成的任务 Value Display 1 1 11 11 111 111 1111 1 11k 11111 11 11k 111111 111 11k 1111111 1 11M 11111111 11 11M 11111111
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本

随机推荐

  • 制作 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 作为数据库 因为我认为它不适合该目的