You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xlwings与Personal.xlsb宏时打开工作簿出现引用无法关闭错误

解决PERSONAL.xlsb搭配xlwings打开新工作簿时的引用错误

问题概述

将PERSONAL.xlsb放在XLSTART文件夹中,实现所有打开的工作簿都能通过VBA宏调用xlwings的RunPython执行Python脚本,但每次打开新工作簿时都会弹出错误提示:此工作簿当前被其他工作簿引用,无法关闭。点击确定后工作簿可正常使用,宏也能运行,但错误提示影响使用体验。

环境与代码

  • 通过xlwings addin install安装xlwings加载项,手动在PERSONAL.xlsb的VBA项目中添加了xlwings引用(曾尝试重命名加载项为xlwings - referenced,无效果)
  • PERSONAL.xlsb中Module1的宏代码:
Sub btnInitialize()
    RunPython "import PyCert; PyCert.btnInitialize()"
End Sub

已尝试的无效操作

  • 重命名xlwings加载项以避免重复导入
  • 取消并重新勾选加载项(原本未勾选任何加载项)
  • 检查注册表寻找OPEN1、OPEN2键,未找到
  • 移除XLSTART中的xlwings加载项或取消VBA引用:错误消失,但RunPython无法正常工作

解决方案

方案1:取消PERSONAL.xlsb中对xlwings的手动引用

xlwings加载项放在XLSTART文件夹时会自动加载,手动添加VBA引用会造成重复引用冲突,操作步骤:

  1. 打开PERSONAL.xlsb,按Alt+F11打开VBA编辑器
  2. 点击菜单栏的工具 > 引用
  3. 在弹出的引用列表中找到xlwings相关的条目(无论名称是什么),取消勾选
  4. 保存PERSONAL.xlsb,重启Excel测试

方案2:延迟PERSONAL.xlsb的初始化

如果方案1无效,可能是加载顺序导致的冲突,通过延迟PERSONAL.xlsb的加载来避免:

  1. 在VBA编辑器中找到PERSONAL.xlsb的ThisWorkbook模块
  2. 插入以下代码:
Private Sub Workbook_Open()
    ' 延迟1秒执行初始化,等待xlwings加载项完全加载
    Application.OnTime Now + TimeValue("00:00:01"), "DelayedInit"
End Sub

Sub DelayedInit()
    ' 若有需要初始化的操作可在此添加,无需求则留空
End Sub
  1. 保存并重启Excel测试

方案3:调整xlwings加载项的加载方式

不将xlwings加载项放在XLSTART,改为手动添加加载项:

  1. 移除XLSTART文件夹中的xlwings加载项文件
  2. 打开Excel,点击文件 > 选项 > 加载项
  3. 在“管理”下拉菜单中选择Excel加载项,点击转到
  4. 在弹出的窗口中点击浏览,找到xlwings加载项文件(通常路径为%APPDATA%\Microsoft\AddIns\xlwings.xlsb)并添加
  5. 回到PERSONAL.xlsb的VBA编辑器,重新添加xlwings引用
  6. 保存并重启Excel测试

内容的提问来源于stack exchange,提问作者Bulky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:22:25