开发者生态
morning
XLIDE:没有 Excel 的 VBA
2026-05-27
1 阅读
sts153
XLIDE - 适用于 VS Code 的 Excel VBA 直接在 VS Code 中编辑 Excel VBA 代码。浏览侧边栏树中的模块,使用语法突出显示和符号导航进行编辑(转到定义、查找所有引用、重命名符号),使用 Ctrl+S 将更改保存回 .xlsm 文件,并通过语言模型 API 向 GitHub Copilot 公开每个操作。要求 VS Code 1.95+ Python 3.10+ -- VBA 读/写后端作为子进程运行 Python 包: pyOpenVBA >= 3.0.1 、 openpyxl >= 3.1.0 无 COM 自动化、无 Office 安装、无 win32com -- 适用于 Windows、macOS、Linux 和远程容器。开发设置 git clone https://github.com/WilliamSmithEdward/xlide_vscode.git cd xlide_vscode # TypeScript 端 npm install npm runcompile # type-check + esbuild bundle -> out/extension.js # Python 端(可选 venv) python -m venv .venv .venv \S cripts \a ctivate # 或:source .venv/bin/activate pip install -r python/requirements.txt 在 VS Code 中按 F5 可启动扩展开发主机,并加载扩展并运行监视编译器。架构 xlide_vscode/ src/ extension.ts # activate() -- 将所有内容连接在一起 pythonBridge.ts # 通过 child_process stdio 的 JSON-RPC 2.0 客户端 xlideFileSystem.ts # xlide-vba:// virtual FileSystemProvider xlsmExplorer.ts # 侧边栏 TreeDataProvider Commands.ts # VS Code 命令注册 agentTools.ts # vscode.lm.registerTool() for Copilot moduleDump.ts #共享导出到文件夹逻辑(UI + AI 通道) vbaSymbolIndex.ts # 内存中跨模块符号索引 vbaLanguageProviders.ts # DocumentSymbol / 定义 / 引用 / 重命名 python/ server.py # JSON-RPC 2.0 服务器(stdin/stdout,换行符分隔) xlide/ vba_io.py # pyOpenVBA 包装器 -- listModules、readModule、 writeModule excel_io.py # openpyxl 包装器 -- readCells、writeCells 语法/ vba.tmLanguage.json # TextMate 语法(MS-VBAL 规范准确) language-configuration/ vba-language-configuration.json # 括号、缩进规则、折叠演练/ # VS Code 入门选项卡的 Markdown 内容 docs/architecture.md # 完整的架构参考 关键设计决策 决策基本原理 长寿命的 Python 流程在所有请求中分摊约 200 毫秒的 Python 启动 FileSystemProvider 优于 TextDocumentContentProvider 读/写虚拟 FS -- Ctrl+S 触发 writeFile,无需自定义保存命令 虚拟 URI 方案 xlide-vba:// 将工作簿路径 + 模块名称与编辑器的文件概念分离 共享 moduleDump.ts 导出逻辑对于 UI 命令和 Copilot 代理工具来说都是单一真实来源 无 COM / 无 Office 可移植性 -- pyOpenVBA 读取 OVBA 二进制文件直接格式化 写入工具确认 防止 AI 代理默默地改变生产工作簿 JSON-RPC 方法(Python 桥) 方法参数 返回 listModules { path } [{ name, type }] listSubs { path, module } [{ name, kind, line }] readModule { path, module } { source } writeModule { path, module, source } {} renameModule { path, module, newName } {} deleteModule { path, module } {} readCells { path,sheet,range } {values } writeCells {path,sheet,startCell,data } {} VBA 语言 ID 在 package.json 中注册为 vba ,扩展名为 .bas , .cls , .frm 。 Syntaxes/vba.tmLanguage.json 中的 TextMate 语法的范围为 source.vba,并涵盖 MS-VBAL v20250520 中的所有保留标识符(第 3.3.5.2 节:语句关键字、标记关键字、运算符标识符、保留名称、特殊形式、保留类型标识符、文字标识符、def-type 指令和实现保留标识符)。构建命令 命令 用途 npm runcompile 类型检查 + dev bundle npm run watch 增量类型检查 + esbuild watch npm run package 生产包(缩小) vsce package --no-dependency 构建 .vsix 用于分发 Copilot 代理工具 工具名称 参考 读取/写入 确认 xlide_listModules #xlideListModules R 否 xlide_listSubs #xlideListSubs R 否 xlide_readModule #xlideReadModule R 否xlide_writeModule #xlideWriteModule W 是 xlide_readCells #xlideReadCells R 否 xlide_writeCells #xlideWriteCells W 是 xlide_exportModules #xlideExportModules W 是 xlide_configureExportMode #xlideConfigureExportMode W 是 每个工作簿导出配置 在每个工作簿旁边存储为 .extension.repo.json : { "exportFolder" : " C:/absolute/path/to/e