Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
HTML Blatt online ausfüllen mittels VBA
17.02.2020 14:21:21
Gerald
Guten Tag,
Ich versuche eine web page automatisch zu bestücken und hänge an der Auswahl von Radiobuttons.
Ziel ist es, mit der Information "BETS3" die mir im Excel vorliegt, den entsprechende radiobutton im Html text zu drücken.
Mit .getElementById("radioSpecStandard2").Click gelingt die Auswahl.
Mein Problem: Wie komme ich von der in Excel vorliegenden Information "BETS3" zu der benötigten ID "radioSpecStandard2".
Sprich, wie kann man im HTML code nach "BETS3" suchen lassen und sich "radioSpecStandard2" zurückliefern lassen?
html code:

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispielcode
17.02.2020 14:47:24
Fennek
Hallo,
könntest Du einen gültigen html-Code posten, der es ermöglicht das lokal zu testen?
mfg
AW: HTML Blatt online ausfüllen mittels VBA
17.02.2020 14:55:47
Gerald
Code anbei
AW: sorry, nix für mich (owT)
17.02.2020 15:36:21
Fennek
AW: Powershell
17.02.2020 17:46:15
Fennek
Hallo,
hier ein (unfertiger) Ansatz mit Powershell. Den sichtbaren Namen der Buttons konnte ich nicht auslesen, sondern nur den Internen, d.h. das müßte noch umgesetzt werden. Muss zusätzlich der "Next"-Button gedrückt werden? Kann man die Wirkung des Codes überprüfen?

$Url = "https://www.herber.de/bbs/user/135241.htm"
$res = iwr $Url
$inp = $res.ParsedHtml.getElementsByTagName('input')
# z.B.: [standardCode: 509, standardVersion: 4]
foreach ($in in $inp) {
if ($in.value.indexOf('509') -ne -1){ # 
mfg
Anzeige
AW: HTML Blatt online ausfüllen mittels VBA
17.02.2020 16:51:31
ChrisL
Hi Gerald
Sub t()
MsgBox FunktionSpezial("BETS3")
End Sub

Private Function FunktionSpezial(strKuerzel As String) As String
Dim objXMLHTTP As Object
Dim sUrl As String, sResult As String
Dim regex As Object
Dim strtext As String
Dim m As Object, i As Long
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
sUrl = "https://www.herber.de/bbs/user/135241.htm"
objXMLHTTP.Open "GET", sUrl, False
objXMLHTTP.Send
strtext = Replace(objXMLHTTP.ResponseText, vbLf, "")
Set regex = CreateObject("vbScript.Regexp")
With regex
.Pattern = "id=""\w*"" class=""""  \/>" & strKuerzel
.Global = True
Set m = .Execute(strtext)
End With
FunktionSpezial = Left(m(0), InStr(m(0), " ") - 2)
FunktionSpezial = Right(FunktionSpezial, Len(FunktionSpezial) - 4)
Set objXMLHTTP = Nothing
End Function
cu
Chris
Anzeige
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 12:00:52
Gerald
Vielen Dank für deine Hilfe.
Problem bei mir ist nun, dass die Seite bereits geöffnet ist und die URL unbekannt ist.
Da heißt objXMLHTTP.Open "GET", sUrl, False geht nicht.
Gibt es eine Möglichkeit die mit objXMLHTTP die aktuelle Seite zu nehmen?
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 15:46:02
ChrisL
Ne das geht nicht.
Den Internet Explorer kannst du per VBA ansprechen bzw. ein Objekt dafür erzeugen. Damit lässt sich der gesamte HTML-Code (innerHTML o.ä.) auslesen. Danach kannst du wie bisher den Regex-Pattern anwenden.
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 16:39:28
Gerald
Hallo,
Leider finde ich nicht Abfrage, die die benötigten Daten enthält. Habe mehere Messageboxen erstellt- aber keine zeigt mir den Inhalt wo "BETS3" oder die IDs zu finden sind.
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate url
.....
...hier werden die Seiten der Reihe nach befüllt, bis zur Seite mit den Radiobuttons.
....
MsgBox IEApp.document.DocumentElement.outerHTML
MsgBox IEApp.document.DocumentElement.innerHTML
MsgBox IEApp.document.DocumentElement.innerText
MsgBox IEApp.document.body.innerText
MsgBox IEApp.document.body.innerHTML
MsgBox IEApp.document.DocumentElement.innerText
Anzeige
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 16:54:34
Anton
Hallo Gerald,
suchst du sowas?:
Code in Zwischenablage:

Sub b()
  Dim IEApp As Object, radio As Object, all As Object  
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "https://www.herber.de/forum/messages/1740926.html"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  For Each radio In IEApp.Document.getelementsbyclassname("radio")    
    If radio.innertext = "BETS3" Then  
      radio.getelementsbytagname("INPUT")(0).Click
      Exit For  
    End If  
  Next
  Set IEApp = Nothing  
End Sub  

mfg Anton
Anzeige
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 19:46:06
Gerald
Das ist perfekt!
Vielen Dank.
AW: HTML Blatt online ausfüllen mittels VBA
18.02.2020 19:48:58
Gerald
Dankeschön an Anton, ChrisL und Fennek für die Unterstützung.
.. wieder was gelernt -)

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige