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

获取WScript引擎调用函数的DLL信息及LibreOffice Basic LenB问题解决

解决方案

一、获取WScript引擎执行VBScript依赖的DLL库信息

  • 使用dumpbin工具(需安装Visual Studio Build Tools或Windows SDK):
    1. 打开管理员权限的命令提示符,定位到C:\Windows\System32(WScript.exe默认路径)
    2. 执行命令:dumpbin /dependents wscript.exe,输出结果将列出所有依赖的DLL文件。
  • 使用Process Explorer工具:
    1. 先运行任意VBS脚本启动wscript.exe进程,再打开Process Explorer
    2. 找到该进程,右键选择「属性」→「依赖项」标签,即可查看所有关联DLL。

二、解决LibreOffice Basic操作Access数据库的LenB及ADOX问题

1. 替代无效的LenB函数

LibreOffice Basic自带LenB行为与VBA不符,可自定义等价函数:

Function VBA_LenB(ByVal str As String) As Long
    ' 模拟VBA LenB:返回UTF-16编码下的字符串字节数
    VBA_LenB = Len(str) * 2
End Function

若处理字节数组,直接用UBound(byteArr) - LBound(byteArr) + 1获取字节长度。

2. 规避__VarLenB调用的LongPtr限制

LibreOffice Basic无LongPtr类型,无法适配64位ACEDAO.DLL的__VarLenB调用要求,直接放弃该方式,改用上述自定义VBA_LenB或通过DAO对象原生属性/方法间接获取长度信息。

3. 64位ACE下创建ADOX对象的修复

仅保留64位AccessDatabaseEngine 2016,确保LibreOffice以64位模式运行(Windows11默认安装的LibreOffice多为64位),使用ProgID创建ADOX对象:

Dim cat As Object
Set cat = CreateObject("ADOX.Catalog")
' 示例:连接Access数据库
cat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\example.accdb;"

若仍失败,检查:

  • 通过注册表确认HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine路径存在
  • 以管理员身份运行LibreOffice
  • 修复ACE安装:控制面板→程序和功能→找到Microsoft Access Database Engine 2016→更改→修复

4. 避免32/64位组件冲突

严禁同时安装32位和64位ACE,会导致COM组件注册混乱,坚持64位ACE+64位LibreOffice的组合即可解决多数兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:27:32