我经常将数据输入第三方数据库。我正在尝试制作一个简单的VBscript,它将从我自己的Excel电子表格中提取数据并将其放在Internet Explorer的第三方条目表单中。除了我在报名表上找到iframe之外,这个过程很有效。真的很感激任何帮助。我是新手。
我需要在启动VBS(长篇故事)之前已经打开表单,所以我的脚本需要查找打开的页面。我发现了一个已经完成此操作的脚本。我已经创建了一个演示系统,它是这样的:
的index.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,以便脚本可以找到页面(参见第一行):
inputscript.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',则错误是'找不到成员'。
有谁可以告诉我这里有一个简单的解决方法吗?
答案 0 :(得分:0)
你可以通过IE.Document.frames("input_frame")
获得框架窗口。由于它不是文档,因此您还需要包含Document
来解决此问题。
IE.Document.Frames("input_frame").Document.All("title").Value = "wheee2"
答案 1 :(得分:0)
我很欣赏这是一篇文章,但对于那些在这里施加压力的人来说,我使用的是“有点”的解决方案。
要获得一个打开的窗口 - 这只有在您使用IE查看时才有效,firefox等不会注册此代码:
For Each AW in CreateObject("Shell.Application").Windows
'AW =活动Windows
If Typename(AW.Document) = "HTMLDocument" Then
'这会选择Open Window文件夹,并且会因此而崩溃 检查
If InStr(1,AW.Document.Title,<String HTML Title>) > 0 Then Exit For
End If
Next
'AW将成为你所用的HTML wiindow,可以像创建一样使用 一个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)时,如果在iframe中激活你想要的字段然后在开发人员中刷新HTML,那么你应该能够将if元素与ifram一起使用内容。