# sw-vba-bootloader **Repository Path**: xian154563/sw-vba-bootloader ## Basic Information - **Project Name**: sw-vba-bootloader - **Description**: "SolidWorks VBA 宏半自动热更新工具——不改 SWP、不重启 SW,改 .bas 立即生效" - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-21 - **Last Updated**: 2026-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sw-vba-bootloader > SolidWorks VBA 宏半自动热更新工具 —— 告别重建 SWP 的痛苦 ## 痛点 SolidWorks 宏开发时,每次修改代码都要: 1. 关闭 SolidWorks 2. 重新构建 `.swp` 文件 3. 重新打开 SolidWorks 4. 重新加载 `.swp` **非常痛苦**,每次调试都要 1-2 分钟。 ## 解决 **本工具让流程变成:** ``` 1. VSCode 改 .bas → Ctrl+S 2. SW 里点 Bootloader 按钮 3. 工具 → 宏 → 运行 → 你的宏 ``` **3 步完成热更新,秒级响应。** ## 工作原理 ``` ┌────────────────────────────────────────┐ │ 磁盘 .bas 文件(VSCode 编辑,UTF-8) │ └────────────────┬───────────────────────┘ ↓ 读取 ┌────────────────────────────────────────┐ │ 引导器(固定在 VBE) │ │ - 读 .bas │ │ - 注入 Attribute VB_Name │ │ - 转 ANSI 写临时文件 │ │ - 删除旧 RuntimeMod 模块 │ │ - Import 临时文件 → 重建 RuntimeMod │ └────────────────┬───────────────────────┘ ↓ ┌────────────────────────────────────────┐ │ RuntimeMod 模块(VBE 中动态) │ │ 代码来自磁盘 .bas(始终最新) │ └────────────────┬───────────────────────┘ ↓ 手动触发 ┌────────────────────────────────────────┐ │ SW 主程序"运行宏"通道 │ │ - 触发 VBE 编译 RuntimeMod │ │ - Run 你的宏 │ └────────────────────────────────────────┘ ``` ## 快速开始 ### 1. 前置条件 - SolidWorks 2018 或更高 - VBE 信任设置:**工具 → 宏 → 安全性 → 勾选"信任对 VBA 项目对象模型的访问"** ### 2. 部署引导器 1. 在 SW 里按 **Alt+F11** 打开 VBE 2. **插入 → 模块** → 把新模块改名为 `Bootloader` 3. 复制 `src/Bootloader.bas` 全部内容到 VBE 4. **修改 `BAS_FILE` 常量**为你的 .bas 路径 5. **Ctrl+S** 保存 ### 3. 创建工具栏按钮 1. SW 工具栏右键 → **自定义** → **命令** → **宏** 2. 拖"新建宏按钮"到工具栏 3. 保持自定义窗口打开 → 点击新按钮 → 选 `Bootloader.main` 4. 关闭自定义窗口 ### 4. 验证 1. 把 `src/examples/HelloSolidWorks.bas` 路径写入 `BAS_FILE` 2. 在 SW 里点 Bootloader 按钮 → 看到"已加载 RuntimeMod" 3. 工具 → 宏 → 运行 → 选 `RuntimeMod.main` → 运行 4. 弹窗显示 "Hello, SolidWorks! (V1)" 5. VSCode 改 `(V1)` → `(V2)` → 保存 6. 再点 Bootloader 按钮 → 工具 → 宏 → 运行 → 看到 "(V2)" **热更新成功!** ## 每日工作流 ``` VSCode 改 .bas → 1 秒 点 Bootloader 按钮 → 1 秒 工具→宏→运行 → 1 秒 ───────────────── 总计:3 秒 ``` vs 传统流程: ``` 关闭 SW → 10 秒 重新构建 SWP → 5 秒 重新打开 SW → 30 秒 重新加载 SWP → 10 秒 ───────────── 总计:55 秒 ``` ## 为什么是"半自动"? **SolidWorks VBA 引擎阉割了 `Application.Run` API**——这是 VBA 引擎标准的"运行宏"方法,但 SW 没实现。 - 引导器自动调用 `Application.Run` → 报 438("对象不支持该属性或方法") - SW 主程序自己的"运行宏"功能(工具栏按钮 / 菜单)→ 正常工作 **必须通过 SW 主程序通道触发**——这就是"半自动"的根本原因。 ### 不推荐的方案 - ❌ **SendKeys 模拟菜单**:焦点丢失时失败,不可靠 - ❌ **`Application.Run`**:SW VBA 阉割,报 438 - ❌ **`swApp.RunMacro2`**:只支持调用 .swp 文件,不能调 VBE 动态模块 ### 推荐的方案 - ✅ 工具栏按钮(最稳) - ✅ 工具 → 宏 → 运行(次稳) ## 项目结构 ``` sw-vba-bootloader/ ├── README.md ├── LICENSE ├── .gitignore ├── src/ │ ├── Bootloader.bas # 核心引导器 │ └── examples/ │ └── HelloSolidWorks.bas # 简单示例 ``` ## 配套项目 - [swp2vba](https://gitee.com/xian154563/swp-vba-extractor) - 从 .swp 提取 VBA 源码 - [vba2swp](https://gitee.com/xian154563/vba2swp) - 把 .bas 打包成 .swp - [sw-dxf-batch-export](https://gitee.com/xian154563/sw-dxf-batch-export) - 钣金批量导出 DXF ## License MIT