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

VBA宏调用TinyTerm LoadKeyboard报错:参数数量错误或属性赋值无效

问题:Tiny Term Emulator VBA宏加载键盘失败(错误450)

我编写了一个使用Tiny Term Emulator的VBA宏,用于连接会话并输入用户名和密码完成登录。目前遇到问题:宏无法加载默认键盘,在指定代码行执行失败,调试时报错信息为“450 Wrong number of arguments or invalid property assignment”。

出错代码片段

Public Sub ShellExecuteTinyTerm(Optional ByVal iForeGround As Integer = 1, _
                                Optional ByVal iBackGround As Integer = 8)
'Declarations
Dim lKeyBoard As Long
Dim lErr As Long, sErr As String
Const sSource As String = "ShellExecuteTinyTerm()"

On Error GoTo ErrorHandler
StackTrace msModule, sSource
    'Call Trap(msModule & " " & sSource, "This proc/func has been trapped")
'Code Start:

If (iBackGround < 0) Or (iBackGround > 8) Then
    Err.Raise MDEBUG_Framework.glHANDLED_ERROR, msModule & " " & sSource, ""
End If

If Not gFrmTE.teIBS.IsConnected Then
    With gFrmTE.teIBS
        .Node = msHOST_NAME
        .NetPort = miTELNET_PORT
        '
        .ConnectionType = miTELNET_CONNECTION
        .Emulation = 18
        .AutoLogin = miAUTOLOGIN_OFF
        .DuplexMode = 0
        ' 以下是出错行
        lKeyBoard = .LoadKeyboard("C:\Program Files\Century\TinyTERM\keyboard.dat", "Default.keyboard")
        '
        .WindowsLookandFeel = True
        'Basic
        .SetFGColor 0, iForeGround
        .SetBGColor 0, iBackGround
        'Reverse
        .SetFGColor 1, iForeGround
        .SetBGColor 1, iBackGround
        'Underlined.
        .SetFGColor 3, iForeGround
        .SetBGColor 3, iBackGround

        .RevDim (1)

        'Cursor
        .CursorType = 0
        .SetFGColor 2, iForeGround
        .SetBGColor 2, iBackGround
        .SetFGColor 5, iForeGround
        .SetBGColor 5, iBackGround
        
        .DestructiveBackspace = False
        .connect
    End With
End If

If gFrmTE.Visible = False Then
    gFrmTE.Show vbModeless
End If
Set MGEN_Globals.gTTEScreen = gFrmTE.teIBS

Finished:
Exit Sub

ErrorHandler:
    lErr = Err.Number
    sErr = Err.Description
    If gbDebug_Mode Then
        DebugPrint msModule & " " & sSource, lErr & "  " & sErr
        Stop
        Resume
    Else
'Error Cleanup
        DebugPrint msModule & " " & sSource, lErr & " " & sErr
        Err.Raise lErr, msModule & " " & sSource, sErr
    End If
End Sub

问题分析

错误450的核心原因是调用LoadKeyboard方法时参数数量错误。根据Tiny Term Emulator的VBA API规范,LoadKeyboard方法通常仅需一个参数——键盘配置文件的完整路径,不需要额外传入配置项名称。你传入了两个参数,导致方法调用签名不匹配。

解决方案

  1. 修正LoadKeyboard调用参数
    将出错代码行修改为仅传入配置文件路径:

    lKeyBoard = .LoadKeyboard("C:\Program Files\Century\TinyTERM\keyboard.dat")
    

    如果Default.keyboard是文件内的特定配置项,需核对官方文档确认是否有专门的方法(如LoadKeyboardProfile),但多数场景下直接传入.dat文件路径即可加载默认键盘配置。

  2. 验证文件路径与权限

    • 确认C:\Program Files\Century\TinyTERM\keyboard.dat路径正确,文件真实存在。
    • 确保运行VBA宏的用户对该文件有读取权限,避免因权限不足导致加载失败。
  3. 核对API版本
    若修改参数后仍报错,需确认使用的Tiny Term Emulator版本对应的VBA API文档,避免因版本差异导致的方法签名不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:27