Füllen Sie in der website-Suchleiste mit Excel-VBA

Ich versuche, eine Excel-makro, fügt Daten in eine web-search-Formular und kopiert dann die Ergebnisse in eine Tabelle ein. Der web-such-form ist nicht wirklich eine "form", aber eine leere Tabelle, so dass ich kann nicht einfach ändern Sie den Eingabewert der form, weil es keines gibt:

<td valign="top">
    <table border="0" cellspacing="0" cellpadding="2">
        <tr>
            <th class="navLabelText" align="left">Order:</th>
            <td>
                <input class="navEditField" id="opt_ordernumber_int" name="ordernumber" type="text" size="6" maxlength="6" />
            </td>
        </tr>
    </table>
</td>
<td width="10">&nbsp;</td>

Den HTML einfach weiter mit mehr von den gleichen Arten von Formen (ich vermute, codiert in Java, da die Seite ein .jsp). Gibt es irgendeine Möglichkeit, dass ich die übergabe von Werten in die leere Tabelle?

Hier ist, was ich habe, so weit:

Sub featurecode()

Dim ie As Object
Dim doc As HTMLDocument
Dim links As IHTMLElementCollection
Dim link As HTMLAnchorElement
Dim i As Integer
Dim found As Boolean
Dim todaysURL As String

Dim objElement As Object
Dim objCollection As Object

Set ie = CreateObject("InternetExplorer.Application")

ie.Visible = True 'false
ie.navigate "https://website.com"
Application.StatusBar = "Loading Feature Codes"

Do Until ie.readyState = IE_READYSTATE.complete: DoEvents: Loop

Set doc = ie.document


' Find the input tag of the order form and submit button:
Set objCollection = ie.document.getElementsByTagName("input")

i = 0
While i < objCollection.Length
    If objCollection(i).Name = "ordernumber" Then

        ' Set text for search
        objCollection(i).Value = "655032"

    Else
        If objCollection(i).Type = "submit" And objCollection(i).Name = "Submit" Then

            ' "Search" button is found
            Set objElement = objCollection(i)
            objElement.Click

        End If
    End If
    i = i + 1
Wend

End Sub

Dem Teil, dass ich Probleme habe, ist diese:

If objCollection(i).Name = "ordernumber" Then

    ' Set text for search
    objCollection(i).Value = "655032"

In der Regel können Sie ändern, HTML Wert in der form, aber in diesem Fall gibt es keine HTML-Wert in das input-tag, also bin ich ratlos. Mein Ziel hier ist, stecken Sie einfach eine Bestellnummer in das Formular aus und klicken Sie den Absenden-button. Leider kann ich nicht zeigen Ihnen die Webseite, da es eine interne Unternehmens-Website, aber hier ist ein screenshot der relevanten info: screenshot

Dank!

  • Herzlich willkommen auf StackOverflow. Haben Sie versucht, alles so weit? (Wie Sie ein neuer Benutzer sind, möchten Sie vielleicht überprüfen Sie die stellen FAQ für die Hilfe im erhalten der Antworten, die du suchst.)
  • Wäre es möglich für uns, um zu sehen, den link zu dieser website?
  • Können Sie erklären, Ihr Ziel?
  • Was hast du bisher? Haben Sie jemals versucht, so etwas wie dieses vor? Es ist nützlich, um eine Vorstellung von Ihrem Niveau des Wissens, so können wir pitch irgendwelche Vorschläge auf der richtigen Ebene.
  • wenn es keine "value" - Attribut im <input> - element in die HTML-Quelle ist das OK: wenn Sie den Wert über Ihren code, es sollte noch gesendet werden, wenn Sie das Formular abschicken. Hinweis - da Ihr input-element hat ein Attribut "id" können Sie nur verwenden doc.getElementById("opt_ordernumber_int").value = "655032": keine Notwendigkeit, um eine Schleife zu finden, die Eingabe.
InformationsquelleAutor user1572431 | 2012-08-02
Schreibe einen Kommentar