为帧内的字段添加值

时间:2012-12-04 23:30:25

标签: access-vba

    Dim IE As InternetExplorer
    Set IE = New InternetExplorer
    Dim hDocument As MSHTML.HTMLDocument
    Dim hElementCollection As MSHTML.IHTMLElementCollection
    Dim hInputElement As MSHTML.htmlInputElement

    IE.Visible = True

    Dim url As String
    url = "www.blah.com"

    IE.Navigate url

    Call SleepIE(IE)
    PauseApp 3

    Dim xSom, xFrame As Object

'这是检查原始链接是否导致登录页面,如果是,则登录,否则重定向

If IE.LocationURL = url Then
Set xFrame = IE.Document.getElementById("infoView")
        PauseApp 3 ' pausing application for 3 seconds for everything to load
        Do While True
        xFrame.contentWindow.Document.getElementById("username").Value = "username"
         If Err.Number = 0 Then
                Exit Do
            ElseIf Err.Number > 0 And Err.Number <> 91 Then
                Exit Function
            End If
            Err.Clear
        Loop

        Do While True
        xFrame.contentWindow.Document.getElementById("password").Value = "password"
         If Err.Number = 0 Then
                Exit Do
            ElseIf Err.Number > 0 And Err.Number <> 91 Then
                Exit Function
            End If
            Err.Clear
        Loop
        xFrame.contentWindow.Document.Forms(0).submit
    End If

    PauseApp 3
    Call SleepIE(IE) ' awaiting ie ready state

'这就是我陷入困境的地方 '我试图将价值分配给“ListingURE_searchText”,下面不起作用

        Set hElementCollection = IE.Document.frames("mainFrameSet").Document.frames("dataFrame").Document.frames("dataFrameSet").Document.frames("workspaceFrameSet").Document.all
        For Each hInputElement In hElementCollection
            If hInputElement.getAttribute("id") = "ListingURE_searchText" Then
            hInputElement.Value = "555"
            End If
        Next hInputElement

我也试过

    Set hElementCollection = hDocument.getElementsByTagName("INPUT")
        For Each hInputElement In hElementCollection
            If hInputElement.getAttribute("id")
               hInputElement.Value = "test"
            End If
        Next hInputElement

blow是页面源的短版本,长度为20页

<head>
<frameset id="mainFrameSet" rows="*">
<frame id="headerPlusFrame" scrolling="no" marginwidth="0" marginheight="0"     src="../listing
<iframe id="dataFrame"
<html>
<head>
<frameset id="dataFrameSet" rows="*,20">
<frameset id="centerFrameset" cols="*,0">
<frame id="workspaceFrame" frameborder="0" border="0" framespacing="2"    title="Workspace" src="workspace.do" name="workspaceFrame">
<html>
<head>
<frameset id="workspaceFrameSet" class="panelFrame" border="0" framespacing="0"     frameborder="0" rows="18,*">
<frame id="workspaceHeaderFrame" scrolling="no" noresize="" marginwidth="0"  marginheight="0" src="workspaceHeader.do?title=" title="Workspace Header" name="workspaceHeaderFrame">
<frame id="workspaceBodyFrame" noresize=""
<html>
<head>
<body onresize="resizeUreWithTimeout()" onload="onLoad()">
<form id="listingForm"
<table id="ListingURE" cellspacing="0" cellpadding="1" style="width: 1249px; height: 376px;">
<script type="text/javascript">
<tbody>
<tr>
<td valign="top">
<table id="ListingURE_toolbar0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<script type="text/javascript">
<td>
<script type="text/javascript">
<div id="ListingURE_toolbar0Container"
<table cellspacing="0" cellpadding="0">
<tbody>
<tr valign="middle">
<td>
<input id="**ListingURE_searchText**" class="textinputs" type="text" value=""  name="ListingURE_searchText" onselectstart="ev

1 个答案:

答案 0 :(得分:0)

您使用的内容看起来更像oldskool VBscript。你真的不应该使用它。

以下是如何使用getElementById和JavaScript设置文本框值的示例:

<div>
    <input type="text" id="ListingURE_searchText" />
    <input type="button" onclick="fnSetValue()" title="Set value" />
</div>

<script language="javascript" type="text/javascript">
    function fnSetValue() {
        document.getElementById('ListingURE_searchText').value = 'testing 123';
    }
</script>