VBA链接到已经打开的基于Web的文件对话框

时间:2019-01-23 16:47:08

标签: excel vba

我有一个公司的Intranet网站,该网站打开一个文件对话框(单击输入框时),以允许用户选择要上传到我们主系统的文件。选择文件后单击“确定”,将关闭文件对话框,并将文件位置放入输入框。我搜索了线程35411826,对于某些应用程序来说这似乎是一个很好的答案-但它不能解决我的独特问题。我们的系统所做的不只是简单地接受上传的文件。它会为上传的文件生成代码,并将其输入几个子系统中。

我想通过控制已打开的文件对话框来自动执行此操作。我试图用文件的位置填充输入框,但是它不起作用。必须单击输入框以打开文件对话框,我可以使用.click命令。

以下是元素的html

<input id="fileToUploadNewDoc" type="file" size="50">

我想象类型“文件”会在单击时启动元素以打开文件对话框。我不知道。但这就是单击输入框时发生的情况。

如何找到打开的文件对话框并将其设置为允许我选择文件的对象变量,然后单击“确定”按钮以用文件位置填充元素?

更新01-24-2019 :我被要求提供更多的编码/解释。

简而言之:

我有一个设置为变量IE2的弹出网页。 此页面上有一个HTML输入框,其ID为“ fileToUploadNewDoc” 这是文档的HTML代码:

<div class="span12">
    <div class="control-group">
        <label class="control-label" for="selectDocumentType">File to Upload</label>
        <input id="fileToUploadNewDoc" type="file" size="50">
    </div>
</div>

这是输入框的图像: Image of Input Box on Web Page

您可以看到“浏览”按钮已添加到输入框中。这不是实际的按钮,而是由javascript,css或其他东西放置在此处。单击输入框中的任意位置将打开文件对话框浏览框。

如前所述,我试图通过直接在输入框中填充文件的位置来绕过“浏览”框,如下所示:

IE2.document.getElementById("fileToUploadNewDoc").Value = "C:\Users\nunYa\Documents\My Scans\Current Scans\PSA_ABC-54596900.pdf"

但是它不会将该位置放入输入框。实际上什么也没发生。

我也尝试过:

IE2.document.parentWindow.execScript "$('#fileToUploadNewDoc').val('C:\Users\nunYa\Documents\My Scans\Current Scans\PSA_ABC-54596900.pdf').trigger('change')"

但无济于事。将文档位置也输入到输入框中也不起作用。

与此输入框进行交互的唯一方法(据我所知)是单击它,这会导致打开一个文件对话框,供用户选择文件夹和文件的位置,当输入框单击文件对话框上的“确定”按钮。简单来说,我认为必须将打开的文件对话框分配给对象变量,以便以编程方式选择文件,然后在文件对话框上单击“确定”。

通常,当程序员打开文件对话框时,他可以将其分配给对象变量。 (Internet上有上千个示例。)这使程序员能够控制文件对话框。即,选择文件夹和文件,然后关闭文件对话框。

在这种情况下,网站打开文件对话框,而不是程序员,所以我没有将其设置为对象变量,因此无法控制它。我需要能够找到文件对话框并将其设置为对象变量以便对其进行控制。我不知道如何更简单地解释这一点。对不起,这很抱歉。

我还检查了控制对话框上的线程35411826。但是,该线程的答案不是控制对话框,而是说明如何将文件无害地直接上传到某些网站的文件夹。正如我之前所解释的,我们的工作系统并不是无害的。上传此文件后,服​​务器端将更新许多其他系统,并在整个不同系统的整个阵列中创建代码和密钥。将文件上传到服务器上的某个文件夹绝对不会做任何事情。

将其归结为一个简单问题,就像我可以提出一个问题:如何找到一个已经打开的文件对话框并将其设置为VBA中的对象变量,以便我可以以编程方式选择一个文件夹和文件,然后单击“好。”我有点想我的问题的标题解释了这一点,但理解为什么会造成混淆。正如这个细节解释所揭示的那样。

0 个答案:

没有答案