首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA在远程桌面上打开文件

使用VBA在远程桌面上打开文件
EN

Stack Overflow用户
提问于 2018-11-30 17:32:24
回答 1查看 4.7K关注 0票数 1

我正在尝试自动化一个过程,其中包括使用Excel中的VBA通过RDP在远程桌面上打开一个文件。我已经成功地登录到RDP,但是现在我很难始终打开这个文件。我编写了一些依赖于SendKeys的代码,这些代码可能在10%的时间内工作,但我正在寻找更健壮的代码。

代码语言:javascript
运行
复制
Sub RunRDP()
Dim RetVal As Variant
Dim Target As String
Dim Sheet As Variant

'Log-in info
Target = "AAAA.com"
UserName = "BBBBBB\CCC"
Pwd = "DDDDD"

'Connect to Remote Desktop
RetVal = Shell("cmdkey /generic:""" & Target & """ /user:""" & UserName & """ /pass:""" & Pwd & """", 3)
RetVal = Shell("c:\Windows\System32\mstsc.exe /v:" & Target, 3)

'Press yes through cert errors
Do
    If InStr(ActiveWinTitle, "Remote Desktop Connection") > 0 Then
        Application.SendKeys "y", True
    End If
Loop Until InStr(ActiveWinTitle, "AAAA") > 0
Application.Wait (Now + TimeValue("00:00:03"))
If InStr(ActiveWinTitle, "Remote Desktop Connection") > 0 Then
    AppActivate "AAAAA.com - Remote Desktop Connection"
Else
    AppActivate "AAAAA.com"
End If
Application.Wait (Now + TimeValue("00:00:07"))

上述代码按预期工作。ActiveWinTitle是一个获取当前窗口标题的函数,请参见下面的内容:

代码语言:javascript
运行
复制
Public Declare Function GetForegroundWindow Lib "user32" _
() As Long
Public Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal HWnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long

Public Function ActiveWinTitle() As String
    Dim WinText As String
    Dim HWnd As Long
    Dim L As Long
    HWnd = GetForegroundWindow()
    WinText = String(255, vbNullChar)
    L = GetWindowText(HWnd, WinText, 255)
    ActiveWinTitle = Left(WinText, InStr(1, WinText, vbNullChar) - 1)
End Function

下面的代码是我试图为打开文件所做的工作。其英文解释如下:

代码语言:javascript
运行
复制
Application.SendKeys "RE", True
Application.SendKeys "~", True
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "{F4}", True
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "{BS}{BS}{BS}{BS}{BS}{BS}{BS}{BS}{BS}{BS}{BS}F:\[**FILEPATH HERE**]~", True
  1. 在桌面上键入RE以突出显示回收站
  2. 按Enter键打开回收站(进入文件资源管理器窗口)
  3. 等一下
  4. 按F4将光标移动到地址栏
  5. 等一下
  6. 从地址栏中删除“回收站”,写入正确的文件路径,然后按Enter键

显然,这是非常不可靠的,这也是我正在寻找更好的东西的原因。

这段代码是我工作时使用的,我想和我的同事分享--因为这一点,我无法下载任何程序来代替VBA来使用。

我看过这些问题,但毫无结果:

Script to Open a batch file on a remote computer我不熟悉WMI,也不确定是否必须完全使用RDP替换。我试着看了它的文档,它完全超出了我的想象。

Run a batch file on a remote desktop from VBA --这是来自同一个用户的早期线程。它有一些我无法理解的死胡同。

我看过很多和我的一样没有答案的线程。这可能是徒劳的努力,但我想确切地知道这是否是可管理的。编辑:我在下面的研究中发现的一些未回答的论坛帖子

提前感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-11-30 17:48:31

非编程方法对你也有帮助吗?

在远程计算机上,创建一个计划好的任务,当有人连接到用户会话时启动该任务。

...and只是在那里运行任何东西。

当然,您可能仍然希望只使用先进的技术,但有时只能通过使用现有的工具才能轻松地避免这些技术。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53562268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档