我发现下面的代码完全符合我的期望,我正尝试将其添加到我的MsAccess项目中。我将MSWINSCK.OCX添加为参考。
Sub Start_Telnet_Session()
'Declare Variables
Dim Data As String
Dim Winsock1
'Server IP, Port & Login Credentials
TelnetServer = localhost
TelnetPort = 23
TelnetUser = test
TelnetPassword = test
TelnetCommands = ifconfig
'Create WinSock Object & Connect to Server
Set Winsock1 = New MSWinsockLib.Winsock
Winsock1.RemoteHost = TelnetServer
Winsock1.RemotePort = TelnetPort
Winsock1.Connect
'Wait Till connection is Success
Do Until Winsock1.State = 7
DoEvents
If Winsock1.State = sckError Then
Exit Sub
End If
Loop
'Send UserName
Winsock1.SendData TelnetUser & vbCrLf
DoEvents: Excel.Application.Wait (Now + TimeValue("0:00:05"))
'Send Password if you Server Requires one
Winsock1.SendData TelnetPassword & vbCrLf
DoEvents: Excel.Application.Wait (Now + TimeValue("0:00:05"))
'Send Commands One by one & Get response from Server
i = 5
While TelnetCommands <> ""
DoEvents: Excel.Application.Wait (Now + TimeValue("0:00:01"))
Winsock1.SendData TelnetCommands & vbCrLf
DoEvents: Excel.Application.Wait (Now + TimeValue("0:00:05"))
'Get Response
Winsock1.GetData Data
Data = VBA.Replace(Data, vbLf, "")
Data = VBA.Replace(Data, vbCr, vbNewLine)
MsgBox Data
i = i + 1
TelnetCommands = ThisWorkbook.Sheets(1).Cells(i, 1)
Wend
MsgBox "Process Completed - Closing Telnet Connection"
Winsock1.Close
End Sub
但是我面临一个问题。我收到错误“未注册课程”。他用黄色衬里。
Set Winsock1 = New MSWinsockLib.Winsock
我完全迷路了,为什么会出现此错误?
实际上我的项目看起来像这个https://prnt.sc/s2ui49
感谢您的帮助
在VBA中,对既没有数据类型也没有初始化程序的命名变量调用Dim
的默认设置为Nothing
。每docs:
指定数据类型?没有指定了初始化程序?没有结果示例
Dim qty
如果Option Strict
关闭(默认),则变量设置为Nothing
。
因此,您尝试将[[Nothing实体Set
赋予类对象失败。要解决此问题,请考虑调整已命名变量的Dim
语句以指定适当的对象类型:
Dim Winsock1 As MSWinsockLib.Winsock
...
Set Winsock1 = New MSWinsockLib.Winsock