【问题标题】:Calling a javascript file (.js) via Excel VBA?通过 Excel VBA 调用 javascript 文件 (.js)?
【发布时间】:2010-09-25 08:41:19
【问题描述】:

如何通过 Excel VBA 调用 javascript 文件 (.js)?


因此,由于我反对同样的问题,我会尝试将我的情况提交给你们。

我正在尝试使用 excel vba 宏从 valeo 的目录中自动提取数据。

我有一份附在法雷奥汽车产品上的参考清单(巨大的清单,超过 300 万件)。我想直接从似乎在 javascript 下运行的目录中导入信息。

我需要的数据是附加到参考的每辆车的列表。

这里是网址:http://outcat-cs.tecdoc.net/ows/en/7FA2A0C501BC34CA4BECB04095663CF1.ows_cs2.srv?view=VIndexFramesetJsp

我想访问“直接文章搜索”选项卡,以便直接从 Excel 选项卡的单元格复制参考,然后在参考上模拟 clic 以显示“链接车辆部分”,然后将它们复制到新的 Excel 工作表中。

我已经使用以下代码成功地使用 html 纯编程网页 (oscaro.com) 做到了这一点:

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1 
    If Helem(i).getAttribute("name") = "toFind" Then Helem(i).Value = "819971" '819971 is the valeo reference searched
    If Helem(i).getAttribute("name") = "submit" Then Set Monbouton = Helem(i)
Next

Monbouton.Click 'this does the click on my button Monbouton

但是这种技术不能用于 valeo 网站,因为当页面是在 javascript 上创建时,我无法(或者至少我还不知道如何去做)选择/单击按钮,因为它没有按钮的名称、值或 ID。

此外,在点击“直接文章搜索”按钮之前和点击之后,地址字段中的 url 似乎是相同的......

尽管我的英语很清楚,但希望我足够清楚......

问候

【问题讨论】:

  • 对你想在幕后做什么的解释会很有帮助。

标签: javascript vba excel


【解决方案1】:

我认为没有直接的方法可以在 VBA 中运行 JavaScript 代码。

您可以尝试将 JavaScript 代码嵌入 HTML 表单中,您可以在(隐藏的)浏览器控件中打开该表单。然后通过浏览器控件的 DOM 填充表单控件并提交表单。提交会触发您要调用的 JavaScript 函数。

样品(未测试):

VBA:

oIE.Document.frmMain.param1.Value = 5
oIE.Document.frmMain.param2.Value = "6"
oIE.Document.frmMain.submit.click ' this line will call the JavaScript function

HTML:

<div id="submit" > <a href="javascript:doAction();">Do Action</a></div>

<script>
function doAction()
{
    // do whatever the code should do
}
</script>

【讨论】:

    【解决方案2】:

    您的意思是通过 Windows 脚本主机? 您可以使用 .js 文件的名称对 wscript.exe 进行 shell(使用 shell 命令)。 但是这个 javascript 对象模型不会像你在浏览器中得到的那样。 如果您告诉我们 javascript 应该做什么,将会很有帮助。

    【讨论】:

      【解决方案3】:

      之前建议的所有方法对我来说听起来都很老套。

      要获得更可靠的解决方案,请通过Windows Script Components 将 Javascript 嵌入到 COM 组件中,并像调用任何其他 COM 组件一样调用基于 Javascript 的 COM 组件。

      【讨论】:

        猜你喜欢
        • 2019-11-28
        • 2020-10-08
        • 1970-01-01
        • 2011-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多