在Access 2007中使用VB自动提交HTML表单
在这件事上我束手无策 我正在处理的项目的一部分需要与HTML表单交互,以便在外部基于web的工具上显示正确的页面。我已经设法使此表单接受输入的变量,并使用document.write动态生成,但我无法可靠地触发“提交”操作,而不会抛出错误91 到目前为止,我一直在使用一个简单的getelementbyid.click调用。。。以下是我试图让它触发的几件事:在Access 2007中使用VB自动提交HTML表单,html,vba,forms,ms-access,Html,Vba,Forms,Ms Access,在这件事上我束手无策 我正在处理的项目的一部分需要与HTML表单交互,以便在外部基于web的工具上显示正确的页面。我已经设法使此表单接受输入的变量,并使用document.write动态生成,但我无法可靠地触发“提交”操作,而不会抛出错误91 到目前为止,我一直在使用一个简单的getelementbyid.click调用。。。以下是我试图让它触发的几件事: TestLoop: Pause (1) BrowserControl.document.getelementbyid("Subm
TestLoop:
Pause (1)
BrowserControl.document.getelementbyid("Submit").click
On Error Goto TestLoop
*(错误循环策略根本不起作用。)
(这实际上效果最好,但因为不同的PC可能有不同的硬件规格和开放式应用程序,可能会减慢速度,对我有效的东西对另一个测试人员不起作用。如果时间太长,我最终会在一个我已经担心过慢的表单上增加额外的延迟。)
(出于某种疯狂的原因,使用debug.print我发现它说导航在实际完成之前就已经完成了,所以这根本不起作用。)
我可能错过了一些。。。我从不同的角度对此进行了探讨。诀窍是我必须使用HTML表单与这个我没有管理员权限的系统进行交互,因此更改信息接收方式实际上不是一个选项
我的最后一个思路是看看是否可以使用纯VB模拟表单提交,绕过“单击”事件的需要,但搜索与Access 2007表单交互的HTML表单相关的内容异常困难:P
任何帮助都将不胜感激 好吧,经过7个月的测试和数千次的激活,拆分“工作”似乎成功了 Form_Open:初始化浏览器对象并将其地址设置为大约:空白 Form_Current:调用使用Document.Write“绘制”web表单的公式,然后进入循环
TestLoop:
BrowserControl.document.getelementbyid("Submit").click
On Error Goto TestLoop
错误91会给你更多的错误信息吗?很抱歉,我认为错误91是非常标准的,不想给初始帖子增加太多额外的混乱。“Object variable或With block variable not set”(对象变量或未设置块变量)我认为这意味着调用“单击”操作时尚未绘制“提交”按钮。我找到了一个似乎有效的解决方案,但我不能100%相信它不会再次崩溃。。。我将原本都是Form_Open的代码分为Form_Open和Form_Current。Form_Open结束时,浏览器控件导航到大约:空白,然后Form_Current开始于document.write代码和单击操作。到目前为止,我还没有出现任何错误91。这似乎是一个正确的修复方法,还是有更好的建议?很多时候,我发现表单的控件在表单打开时可能不可靠。因此,我习惯性地推迟处理其控件的任何事情,以形成负载。表单加载之后,表单流发生得更晚。因此,到那时,它们都应该可用。我不确定这是问题的根源,但你的结果听起来很有希望。:-)是 啊我发现了一个困难的方法,我需要将回车键切换到下一行而不提交评论。除息的
<script type="text/javascript">
window.onload = function(){
document.getElementById('Submit').click();;
}
</script>
Private Sub wb_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
If Me.BrowserControl.Document.URL= "about:blank" Then
BrowserControl.document.getelementbyid("Submit").click
End If
End Sub
TestLoop:
BrowserControl.document.getelementbyid("Submit").click
On Error Goto TestLoop