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方法通常仅需一个参数——键盘配置文件的完整路径,不需要额外传入配置项名称。你传入了两个参数,导致方法调用签名不匹配。
解决方案
修正
LoadKeyboard调用参数
将出错代码行修改为仅传入配置文件路径:lKeyBoard = .LoadKeyboard("C:\Program Files\Century\TinyTERM\keyboard.dat")如果
Default.keyboard是文件内的特定配置项,需核对官方文档确认是否有专门的方法(如LoadKeyboardProfile),但多数场景下直接传入.dat文件路径即可加载默认键盘配置。验证文件路径与权限
- 确认
C:\Program Files\Century\TinyTERM\keyboard.dat路径正确,文件真实存在。 - 确保运行VBA宏的用户对该文件有读取权限,避免因权限不足导致加载失败。
- 确认
核对API版本
若修改参数后仍报错,需确认使用的Tiny Term Emulator版本对应的VBA API文档,避免因版本差异导致的方法签名不一致。
内容的提问来源于stack exchange,提问作者CrazyCoder
相关产品推荐
相关产品推荐

