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

Windows 11下Excel VBA调用PI Datalink标签搜索编译报错求助

PI SDK VBA标签搜索编译错误解决方向

问题说明

更换Windows 11系统后,原Excel VBA批量拉取PI数据程序的标签搜索功能失效,在代码行Dim search As New PISDKD1g.TagSearch处触发编译错误:用户定义类型未定义。对象浏览器中可看到PISDKD1g和PISDK引用,但代码无法识别该类型;手动输入有效PI标签时,数据拉取功能可正常运行。已尝试添加PtrSafe、将变量声明为Variant/Object并使用CreateObject、直接调用TagSearch.Show等方法,均未解决问题。

原按钮点击子程序代码:

Private Sub SearchButton_Click()
    Dim search As New PISDKD1g.TagSearch
    Dim Selected As PointList
    Dim point As PIPoint
    Dim p As Variant
        
    Set Selected = search.Show
        
    For Each p In Selected
        Set point = p
        If PItagsbox.Text = "" Then
            PItagsbox.Text = point
        Else: PItagsbox.Text = PItagsbox.Text & ", " & point
        End If
    Next
    
End Sub

解决方向

  • 核对PI SDK与Excel的位数兼容性:Windows 11多为64位系统,若安装的是32位PI SDK但使用64位Excel,会导致引用无法正常识别。需:
    1. 查看Excel位数:打开Excel→「文件」→「账户」→「关于Excel」
    2. 卸载当前PI SDK,安装与Excel位数匹配的版本(从OSIsoft官方渠道下载对应版本)
  • 重新注册PI SDK组件:Win11的权限限制可能导致组件注册失效,以管理员身份运行命令提示符,执行以下注册命令(路径需替换为实际PI SDK安装路径):
    regsvr32 "C:\Program Files\PIPC\PISDK\PISDK.dll"
    regsvr32 "C:\Program Files\PIPC\PISDK\PISDKD1g.dll"
    regsvr32 "C:\Program Files\PIPC\AF\PublicAssemblies\OSIsoft.AFSDK.dll"
    
  • 调整引用优先级:在VBA编辑器中依次点击「工具」→「引用」,将PI SDK和PI SDK Dialog 1.0 Type Library(对应PISDKD1g)移至引用列表最上方,避免与其他引用产生冲突
  • 修正后期绑定写法:之前的后期绑定尝试写法有误,正确写法如下,替换原变量声明部分可绕过编译类型识别问题:
    Dim search As Object
    Dim Selected As Object
    Dim point As Object
    Set search = CreateObject("PISDKD1g.TagSearch")
    Set Selected = search.Show
    
    注:后期绑定会丢失代码智能提示,但可解决编译错误
  • 检查系统权限设置:将Excel设置为「以管理员身份运行」,避免组件访问权限不足;同时确保PI SDK安装目录的读写权限已开放给当前登录用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:31:13