我看到很多论坛都在谈论从Excel文件启动远程桌面连接。
我也看到了这段代码,这很好并且有效。
Sub OpenRDP()
Dim MyRDP As Variant
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
End Sub
但是,在我的Excel文件中,在一列中我有HOST地址,旁边是一个包含密码的列。
我的问题是:是否可以启动RDP并将其传递给主机IP地址和密码?如果是,它是如何完成的?
谢谢!
答案 0 :(得分:2)
由于您只是通过shell调用命令,因此您不能真正处理以编程方式启动的应用程序(在本例中为RDP)。所以你不能这样做:
MyRDP.Password = Range("B2").value
但是,您可以使用Application.Sendkeys
向Windows发送按键,它会盲目地应用于发送命令时光标所在的位置。
假设您的密码存储在同一行,但是在列上(相邻的单元格):
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
发送密码并输入"输入"按键接受密码。
因为RDP需要花一点时间才能弹出,所以在调用shell命令之后你不能只是扔掉那行。你必须等待一段时间。 5秒在我的compyter上工作得很好,但你的电脑可能会更慢或更快,所以你可能不得不在这里闲逛:
Sub OpenRDP()
Dim MyRDP As Variant
Dim MyLink As String
MyLink = "c:\windows\system32\mstsc.exe /v:" & ActiveCell.Value
MyRDP = Shell(MyLink, 1)
'wait five seconds and send password in adjacent cell of same row
Application.Wait (Now() + TimeValue("0:00:5"))
Application.SendKeys (ActiveCell.Offset(, 1).Value & "{ENTER}")
End Sub
我毫不怀疑,通过查询WMI运行进程并等待RDP弹出来执行sendkeys,或者搜索库以帮助使用代码与RDP交互,我可以毫不犹豫地将其复杂化10000倍,但......对于两行代码,这种方法可以让你走得很远。
另外,(因为它值得一说),将您的密码存储在Excel中并不十分安全。获得对工作簿的访问权限的任何人都可以访问您的远程桌面。即使工作簿受密码保护,只需按一下按钮就可以破解它。