1

我定期将数据输入第三方数据库。我正在尝试制作一个简单的 VBscript,它将从我自己的 Excel 电子表格中提取数据并将其放置在 Internet Explorer 的第三方输入表单中。该过程正在运行,除非我在输入表单上找到 iframe。非常感谢您对此的任何帮助。我是新手。

在启动 VBS(长篇故事)之前,我需要该表单已经打开,因此我的脚本需要查找打开的页面。我找到了一个已经这样做的脚本。我创建了一个演示入口系统,它是这样的:

索引.htm

<html>
<body>

<p>First input box is on the_index.htm (main document).</p>
<input id="title" name="title-1" style="width: 220px;" title="enter title" type="text" value="">

<br /><br /><br /><br />
<iframe frameborder="0" id="input_frame" marginheight="0" marginwidth="0" name="input_frame" src="the_iframe.htm">

</body>
</html>

the_iframe.htm

<html>
<body>
<p>Second input box is on the_iframe.htm (iframe called from the main document).</p>
<input id="title" name="title-1" style="width: 220px;" title="enter title" type="text" value="">
</body>
</html>

那么我的 VBS 目前看起来像这样(遗憾的是必须托管演示 htms,以便脚本可以找到页面(见第一行):

输入脚本.vbs

surl ="http://www.website.com/index.htm"
set ie = nothing
set shapp=createobject("shell.application")
on error resume next
For Each owin In shapp.Windows
     if left(owin.document.location.href,len(surl))=surl then
        if err.number = 0 then
        set ie = owin
          end if     
    end if
err.clear
Next
on error goto 0
if ie is nothing then
    wscript.echo "Window Not Open"

else
IE.Document.All.Item("title").Value = "wheee1"
IE.Document.frames("input_frame").All.Item("title").Value = "wheee2"
end if

“wheee1”部署工作正常,但 wheee2 生成“对象不支持此属性或方法:'ie.document.frames(...).All'。如果我摆脱了“.All”,那么错误就是“找不到成员”。

谁能告诉这里是否有一个简单的修复?

4

2 回答 2

0

您可以通过IE.Document.frames("input_frame"). 由于它不是文档,因此您也需要包含Document此地址。

IE.Document.Frames("input_frame").Document.All("title").Value = "wheee2"
于 2012-10-15T02:40:26.877 回答
0

我很欣赏这是一篇 od;d 帖子,但对于任何在这里挣扎的人来说,我使用的都是“小”解决方案。

要获得一个打开的窗口——这仅在您使用 IE、firefox 等未使用此代码注册时才有效:

 For Each AW in CreateObject("Shell.Application").Windows 

'AW = 活动窗口

   If Typename(AW.Document) = "HTMLDocument" Then 

'这将选择打开的窗口文件夹,如果没有这个检查就会崩溃

     If InStr(1,AW.Document.Title,<String HTML Title>) > 0 Then Exit For
   End If
 Next

'AW 将成为您之后的 HTML 窗口,可以像创建 IE 对象一样使用,

例如。

Set oIe = CreateObject("InternetExplorer.Application")

顺便说一句,与 Excel 交互的对象是:

Set xl = CreateObject("Excel.Application")

然后你可以打电话给 xl。和你正常的 vba 命令

xl.workbook().worksheets().cells().value etc

IFrame 部分 - 这个部分的难点在于它是一个 Window 对象而不是一个文档对象

所以你有你的活动窗口,你想导航到 iframe:

Set iFra = AW.Document.GetElementById(<String - iframe id>)

或集合:

For each iFra in AW.Document.GetElementsByTagName("iframe")
  iFra...
Next

拥有 iframe 后,您需要使用 .ContentWindow 属性

所以从上面 iFra.ContentWindow

可以像 AW 1 一样使用它们来获取所有嵌套属性

例如

iFra.ContentWindow.Document.GetElementById(<String - ID>).Value = "Sorted"

请注意,使用此功能时,如果内容刷新,则您需要重新抓取 iframe 对象(上面的设置 IFra 命令)

使用 IE 开发人员(IE 中默认为 f12)查看 html 时的一个有用提示,在 iframe 中激活您想要的字段,然后在开发人员中刷新 HTML,然后您应该能够将 get 元素与 iframe 内容一起使用。

于 2014-09-02T19:32:42.097 回答