用VBA控制远程虚拟机上的Excel实例 [英] Controling Excel Instance on a Remote Virtual Machine with VBA

查看:55
本文介绍了用VBA控制远程虚拟机上的Excel实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个非常大的国际集团工作。为了获取组通用的数据,我需要使用Citrix Receiver连接到远程虚拟机(VM)。

此VM的编程方式是,当某人(即非管理员)连接到它时,它会启动一个临时Excel。请注意,非管理员用户只能访问VM上的此Excel实例。

在此Excel实例中,有一个我用来查询每天需要获取的组提供的数据的外接程序。我手动执行此操作,并希望自动执行此操作。

我已经设法编写了本地运行的代码。此代码通过公司网站连接到VM,因此我在前面打开了临时Excel。以下是代码以及如何在我面前打开临时Excel:

Dim ie As Object
Dim doc As New HTMLDocument
Dim usn_box As HTMLInputElement
Dim pwd_box As HTMLInputElement
Dim btn As HTMLButtonElement
Dim img As HTMLImg

Set ie = New InternetExplorerMedium ' needs this and not usual internetExplorer
ie.Visible = True
ie.Silent = True
ie.Navigate "https://the.path"

While ie.Busy Or ie.ReadyState <> 4
    DoEvents
Wend

Application.Wait Now + TimeSerial(0, 0, 5)
Set doc = ie.Document

'if error on usn_box go directly to image and click it cause you are logged in
Set usn_box = doc.querySelector("#username")
If Not usn_box Is Nothing Then
    usn_box.Value = usn

    Set pwd_box = doc.querySelector("#password")
    pwd_box.Value = pwd

    Set btn = doc.querySelector("#loginBtn")
    btn.Click

    Application.Wait Now + TimeSerial(0, 0, 5)
End If

Set img = doc.querySelector("#home-screen > div.home-view-content > section.scrollable.storeViewSection > div.store-apps-container > ul > li:nth-child(1) > a.storeapp-details-link > img")
img.Click
Application.Wait Now + TimeSerial(0, 0, 20)

现在我需要的是能够使用我的VBA代码控制此Excel,以便能够使用此数据通用加载项。我如何才能做到这一点?

我尝试检查如何从另一个实例控制Excel实例,但由于有问题的实例位于远程VM上,我的本地Excel看不到它。此外,没有其他方法可以连接到未通过网站访问的虚拟机。

请赐予我智慧和伟大的诸神。

编辑 以回应基思·斯沃林的评论。我点击了文件和浏览。我看到有一个名为CTRXPRD的文件夹,它有子文件夹。这些子文件夹中的每个子文件夹都具有对VM具有访问权限的人员的企业ID。

当我单击Browse时,我在我的文件夹中启动,更具体地说,是在Documents子文件夹中启动。因此,似乎每个企业ID在此VM上都有一个Windows帐户。

这对我有什么帮助?

推荐答案

我发现了大量工作。因为我可以将文件保存在虚拟机上,而且我可以从虚拟机访问我的本地服务器,但反之亦然:

  1. 创建启用宏的工作簿(MEWB)
  2. 此MEWB包含获取数据并将其保存到本地服务器上的一个或多个Excel文件中所需的所有宏
  3. 一旦您对这些宏感到满意,请在此MEWB中创建一个在此MEWB打开时运行的宏。此在打开时运行的宏仅调用所有其他宏
  4. 将此MEWB另存为加载项(.xlam)
  5. 在Excel上启用此加载项,就像启用规划求解加载项或任何其他加载项一样

现在,每次打开Excel实例时,您编写的所有宏都将运行,因此每次您连接到VM时,它们都将运行,并且您将在本地存储数据。

这是一件糟糕透顶的工作,但很管用。

这篇关于用VBA控制远程虚拟机上的Excel实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆