Access 接入 AI 大模型:VBA 流式交互与 Markdown 渲染开源方案

作者:本站 来源:本站

2026-04-09 11:06 1495阅读

欢迎了解!


项目背景

尽管 AI 大模型已广泛应用于各类开发环境,但 Access 领域进展缓慢。主要原因在于 VBA 缺乏原生的 HTTP 流式支持、Markdown 渲染能力及中文编码处理较为繁琐。若要在 Access 窗体内集成 AI,开发者需自行攻克 HTTP 请求、JSON 组装、SSE 解析及 UTF-8 编码等诸多技术难点。


为此我开发了 accessAI 工具库,打包解决了上述问题。仅需导入两个 .bas 模块即可启用,具备流式输出、Markdown 富文本渲染及一键生成问答窗体的功能,开箱即用。现将其源码开源,链接位于文末。


一、核心功能亮点


功能项

详细描述

AI 智能问答

支持在 Access 界面直接调用 DeepSeek 进行提问

流式输出

借助 curl 配合 SSE 协议实现逐字实时显示

兼容性处理

若无 curl 环境,自动切换至同步请求加打字机模式

Markdown 解析

将模型返回的 Markdown 转换为 Access 支持的富文本 HTML

自动生成界面

通过代码调用自动创建问答窗体与 Markdown 查看器

UTF-8 适配

确保中文请求与响应无乱码现象

这些功能的组合,意味着无需推翻现有系统,便可为 Access 项目快速增添 AI 问答、文本生成及内容格式化展示的能力。



二、架构设计与文件组成


目录中包含的核心组件并不多:

文件名

用途说明

AI.accdb

演示数据库,含已导入模块与窗体

Module_Markdown.bas

核心逻辑,负责 AI 调用、渲染及窗体生成

JsonConverter.bas

JSON 解析组件,基于 VBA-JSON 封装

README.md

项目文档与快速上手指南

从结构来看,这遵循了适合 Access 开发者的务实路线:

  1. 不依赖复杂的外部框架。
  2. 充分利用 VBA 原生能力与系统组件。
  3. 将复杂逻辑封装于独立模块内。
  4. 优先保证可运行性而非过度追求架构。

这种设计理念非常实际。对于多数 Access 场景而言,关键在于能否快速导入、配置与验证,而非抽象设计的优雅程度。



三、技术原理分析:如何在 Access 中实现 AI 体验


这个开源项目的核心价值不在于界面,而在于对关键技术难题的处理。

1. 请求构建:避免手动拼接 JSON

项目中未直接使用字符串拼接 JSON,而是利用字典和集合构造请求体,再通过 JsonConverter 统一序列化。

此举带来两大优势:

  • 规避引号转义、换行符及特殊字符处理不当的问题。
  • 后续扩展模型参数时更易维护。

请求体构建的核心逻辑如下:

Private Function BuildDeepSeekRequestBody(ByVal sQuestion As String, _
                                          Optional ByVal bStream As Boolean = False) As String
    Dim oRoot As Object
    Dim oMsg As Object
    Dim colMessages As Collection

    Set oRoot = CreateObject("Scripting.Dictionary")
    Set oMsg = CreateObject("Scripting.Dictionary")
    Set colMessages = New Collection

    oMsg.Add "role", "user"
    oMsg.Add "content", sQuestion
    colMessages.Add oMsg

    oRoot.Add "model", API_MODEL
    oRoot.Add "messages", colMessages
    oRoot.Add "temperature", 0.7
    oRoot.Add "max_tokens", 8192
    If bStream Then oRoot.Add "stream", True

    BuildDeepSeekRequestBody = JsonConverter.ConvertToJson(oRoot)
End Function

这段实现虽不复杂却至关重要。许多 Access 调用 Web API 的失败案例,往往源于网络之外的 JSON 拼装细节错误。


2. 流式输出:借助 curl+SSE 突破限制

Access 和 VBA 本身对现代 AI 接口的流式返回支持有限。accessAI 采用的策略是:

  • 先将请求体保存为临时 JSON 文件。
  • 调用系统内置 curl 发起请求。
  • 利用 SSE 方式接收模型分段输出。
  • 将响应写入临时文件。
  • VBA 定时轮询该临时文件。
  • 解析 data 行中的 delta.content 并实时刷新至窗体。


此方案优势显著:

关键点

价值体现

利用 curl

绕过 VBA 对流式 HTTP 支持的不足

使用临时文件

简化进程间数据交换流程

轮询解析 SSE

在 Access 环境下达成近实时输出

分段刷新 UI

改善交互体验,消除长时间等待感

这是典型的“老平台兼容新接口”的工程思路:不硬碰硬,而是借用系统现有工具拆解难题。


3. 回退机制:非流式环境亦可用

项目并未绑定单一方案。

若系统中缺失 curl,会自动切换至同步请求模式,并叠加“打字机效果”,使结果逐段呈现而非一次性弹出。

这一步十分关键,因为企业环境各异:

  1. 部分机器系统版本较旧。
  2. 部分环境权限受限。
  3. 部分客户端组件不完整。

若无此回退方案,项目仅在少数机器上表现良好。现在的双通道设计显然更贴合真实业务需求。


4. Markdown 渲染:提升输出可读性

大模型返回的内容常包含结构化 Markdown。若直接塞入文本框,体验较差。

accessAI 在模块中实现了 Markdown 到 Access 富文本 HTML 的转换,支持:

  1. 标题层级。
  2. 粗体、斜体及粗斜体。
  3. 删除线样式。
  4. 行内代码与代码块。
  5. 有序与无序列表。
  6. 引用块格式。
  7. 水平分割线。
  8. 链接和图片占位提示。

其思路并非追求完整的 Markdown 标准,而是围绕 Access 富文本控件支持的 HTML 子集做适配。即追求“在 Access 里显示效果最好”,而非“实现全功能 Markdown 引擎”。

这是一种非常合理的取舍。


5. UTF-8 处理:避开常见编码坑

项目专门处理了 UTF-8 读写问题,包括:

  1. 使用 ADODB.Stream 读写 UTF-8 内容。
  2. 写入时去除 BOM 头。
  3. 读取响应时将 UTF-8 转换为 VBA 字符串。

这对中文用户尤为关键。

若无此处理,常见问题包括:

  1. 中文提问导致请求异常。
  2. AI 返回中文出现乱码。
  3. 流式响应中断后解析失败。

许多人对接 API 失败,往往不是接口文档问题,而是编码细节。accessAI 提前解决了这一隐患。



四、接入步骤:如何集成到自己的项目


第一步:导入基础模块

将以下两个模块导入 Access 数据库:

  1. JsonConverter.bas
  2. Module_Markdown.bas

其中,JsonConverter.bas 负责 JSON 解析,Module_Markdown.bas 为核心模块。

第二步:添加 VBA 引用

打开 VBA 编辑器:

工具 → 引用

勾选此项:

Microsoft Scripting Runtime

这是字典对象等功能的基础依赖。

第三步:配置接口参数

修改模块中的常量配置,填入自己的 API Key。目前仅支持 deepseek,后续计划接入更多大模型!

Private Const API_KEY   As String = "你的 API Key"
Private Const API_URL   As String = "https://api.deepseek.com/chat/completions"
Private Const API_MODEL As String = "deepseek-chat"


若后续扩展更多模型,此处将是自然的配置入口。

第四步:一键生成 AI 问答窗体

在 VBA 立即窗口执行:

CreateAIForm 

执行后,项目将自动创建名为 frmAI 的窗体,并生成核心控件:

控件名

功能说明

txtQ

输入问题区域

btnAsk

提交查询按钮

lblMsg

状态显示标签

txtAnswer

AI 返回结果显示区


运行效果预览

动图为 GIF 截图示例





五、实际业务应用场景



列举几个贴近业务的用法。

场景一:单据录入辅助

在采购单、入库单、售后记录、客户拜访记录等表单中,用户录入基础信息后,可让 AI 自动补充:

  1. 备注说明。
  2. 风险提示。
  3. 标准化描述。
  4. 后续处理建议。

此类需求本质无需复杂对话,只需将当前表单字段拼成提示词即可。

场景二:内部知识问答

若 Access 系统是部门工作平台,可将 AI 问答作为“业务帮助入口”,例如:

  1. 某字段填写规范。
  2. 特定异常状态含义。
  3. 单据流程下一步骤。
  4. 查询条件组合方法。

相比翻阅帮助文档,用户体验更为直接。

场景三:报表解读与总结

Access 系统常有现成查询和统计报表。将结果转为结构化文本后,交由 AI 处理:

  1. 本月数据摘要。
  2. 异常点说明。
  3. 趋势概括。
  4. 管理层汇报草稿。

此类场景不要求完全自动化,但作为“初稿生成器”极合适。

场景四:文本规范化处理

针对售后记录、巡检记录、客服备注、生产异常说明等自由文本字段,AI 可承担:

  1. 语句润色。
  2. 内容归纳。
  3. 标准术语替换。
  4. 风险标签提取。

Access 在企业常承担轻量信息系统角色,而此类文本处理需求频率极高。


六、结语与展望



我认为该项目最有价值的地方,是嵌入现有业务系统的可行性。主要特点如下:

  1. 使用 VBA 构造标准聊天请求,并通过 JSON 序列化降低错误率。
  2. 使用 curl + SSE 在 Access 中实现流式输出体验。
  3. 通过同步回退 + 打字机效果,兼顾不同 Windows 环境。
  4. 将 Markdown 转为 Access 富文本 HTML,提升结果可读性。
  5. 通过自动建窗体,降低 AI 功能接入和演示成本。

若您从事 Access 开发,很值得深入研究。它展示的不仅是孤立技巧,而是一条完整落地路径:如何在不重写系统前提下,为 Access 补上 AI 能力。


测试环境建议参考:

  1. Microsoft Access 2010 及以上,推荐 2016、2019、365。
  2. Windows 7 及以上操作系统。
  3. 如需更佳流式体验,建议 Windows 10 1803 及以上。

参考资料

  1. DeepSeek 平台:https://platform.deepseek.com/
  2. VBA-JSON:https://github.com/VBA-tools/VBA-JSON



完整源码获取


项目已开源,欢迎 Star:

GitHub 地址:
https://github.com/miaowei2/accessAI

包含:

  • Module_Markdown.bas — 核心模块(AI 调用 + Markdown 渲染 + 窗体生成)
  • JsonConverter.bas — JSON 解析模块
  • AI.accdb — 示例数据库,导入即可体验

下载后直接导入即可使用,无需额外配置。



写在最后


Access 虽“老”,但在中小企业、政府机关、制造业中仍有广泛应用。多年运行的 Access 系统承载着核心业务数据,短期内难以迁移。

与其被动淘汰,不如用技术手段赋予新能力。AI 大模型接入看似门槛高,但 accessAI 已跑通核心链路——两个模块、一行命令、几分钟即可在 Access 系统内实现 AI 问答功能。

若您的团队正在使用 Access,或您是一名 Access 开发者,欢迎试用此开源工具。 觉得有用,请帮忙转发给更多需要的人。


上一篇

AccessAI 开源项目迎来更新,新增 DeepSeek V4 多模型支持与自定义端点。系统强化对话历史持久化,支持会话管理。核心亮点包括数据库对象自动分析,读取表结构及样例数据供 AI 研判。界面升级为气泡式聊天,提供富文本与 WebBrowser 双模式。此次更新旨在将 Access 转型为嵌入式 AI 辅助模块,提升业务智能化水平。

下一篇

本文深入探讨了 12306 系统如何通过引入分布式内存数据网格技术,将传统三层架构迁移至云化平台。文章以 12306、社保项目及金融单位 POC 为例,详细阐述了利用 Pivotal Gemfire 解决高并发、大数据量下的性能瓶颈方案。通过弹性扩展的内存缓存层,有效降低了数据库压力,实现了业务系统的快速响应与稳定运行,为类似场景提供了宝贵的技术参考。

相关阅读

本文深入讲解了数据库的基本概念、分类及关系型与非关系型数据库的区别。重点介绍了 MySQL 的特点、版本含义及 SQL 语言分类。同时提供了基于 Linux 系统的 MySQL 5.7 详细安装步骤,包括密码重置、登录提示符自定义等实用操作,适合初学者快速入门掌握数据库管理技术。
本期 BBC 英语教学节目解答了听众赖海成的疑问,详细辨析了英语词汇 entrance 和 access 在表示“入口”时的区别。文章指出 entrance 是可数名词,侧重物理通道;access 是不可数名词,强调使用权或机会。通过多个例句,如大学入学考试和无障碍通道,帮助学习者准确掌握两者用法及搭配。
本文对比了Excel与Access的优缺点,指出Excel虽计算强但单机、数据量受限,Access虽支持多用户但难学且性能有限。随后介绍魔方网表,它兼具二者优势:无需编程、支持数千人并发、海量存储、兼容Excel函数、可集成第三方系统,能快速构建企业信息化系统,是更好的替代方案。
本文详细介绍了在Access中使用菜单操作法合并数据的步骤,包括建立“订购明细”与“用户明细”两表的数据库关系、通过拖拽字段设置联接类型,最终完成数据合并。适合Access初学者快速掌握基础关系操作。
随着跨境电商增长,Access集团精选海外小众品牌引入中国,涵盖美妆、母婴、健康等领域。2018年零售进口总额达785.8亿元。Access集团携15个品牌亮相上海,为双十一造势,预计成交额突破10亿元,是其首次参与时的66倍。集团通过创新品牌管理模型,助力品牌快速适应中国市场,实现全球买卖。
本文主要讲解如何利用 Excel VBA 结合 SQL 语言来操作 Access 数据库。通过 ADO 组件连接数据库,演示了使用 CREATE TABLE 和 ALTER TABLE 语句动态创建数据表及添加字段的具体方法。文章涵盖了代码编写、引擎选择、主键设置及字段类型定义等关键知识点,帮助读者掌握自动化构建数据库结构的技术。
AccessAI 开源项目迎来更新,新增 DeepSeek V4 多模型支持与自定义端点。系统强化对话历史持久化,支持会话管理。核心亮点包括数据库对象自动分析,读取表结构及样例数据供 AI 研判。界面升级为气泡式聊天,提供富文本与 WebBrowser 双模式。此次更新旨在将 Access 转型为嵌入式 AI 辅助模块,提升业务智能化水平。
本文详细介绍了Access数据库中常用的数值分组函数(IIF、CHOOSE、SWITCH、PARTITION)和日期时间分组函数(FORMAT),包含语法说明、参数限制和实际SQL示例,帮助读者快速掌握数据分组技巧。
本文详细介绍了在Access数据库中利用“简单查询向导”进行数据查询的步骤。通过选择“订购明细”和“用户明细”两个表,分别添加用户ID、产品和性别字段,最终完成联合查询并保存结果。适合数据库初学者快速上手。