Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1300to1304
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
Inhaltsverzeichnis

Web-Button auswählen

Web-Button auswählen
06.03.2013 09:17:17
Albert
Guten Morgen zusammen,
ich hab das Problem, dass ich aus Excel heraus auf einen Button im Intranet zugreifen möchte, der die unten stehende Beschreibung hat.
Die beiden Möglichkeiten hab ich ausprobiert, aber leider ohne Erfolg.
' IEDocument.getElementByID("CustomActionButton1").Click
' IEDocument.forms(0).all("Neuer Verbesserungsvorschlag").Click
id="dlcCustomActionButton1" type="button" title="Neuer Verbesserungsvorschlag" onclick="blalbalbal');" value="Neuer Verbesserungsvorschlag"
Hätte von euch jemand einen Tipp, wie ich das umsetzen könnte
Gruß
A.

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Web-Button auswählen
06.03.2013 12:43:53
Martin
Hallo Albert,
wie wäre es mit folgendem Code:
IEDocument.getElementByID("dlcCustomActionButton1").Click
Auf den ersten Blick würde ich sagen, dass du bei der ID-Bezeichnung nur das "dlc" vergessen hast.
Viele Grüße
Martin

AW: Web-Button auswählen
06.03.2013 13:03:46
Albert
Hallo Martin,
erstmal herzlichen Dank für deine Antwort.
Ich dachte mich schon sehr auf verlorenem Posten zu stehen.
Auch das dlc hab ich davor gesetzt, doch leider ohne jeglichen Erfolg.
Es wird ein Laufzeitfehler 91 ausgegeben.
So wie ich mir die Struktur vorstelle, befindet sich der "CustomActionButton1" innerhalb eines anderen Frames.
Leider kenne ich mich mit HTML überhaupt nicht aus.
Oder aber IEDocument.forms(0).all(" ").click sucht innerhalb der ganzen Seite nach dem Element. Kennst du dich da näher aus?
Gruß
A.

Anzeige
AW: Web-Button auswählen
06.03.2013 13:33:30
Martin
Hallo Albert,
ich habe jetzt einen Termin und kann mich erst später darum kümmern. Bitte suche mir doch mal irgendeine Website mit Frames und Formularfeldern im Internet heraus, an denen ich herumtesten kann. Ich bin optimistisch, dass ich eine Lösung finde.
Viele Grüße
Martin

AW: Web-Button auswählen
06.03.2013 15:21:51
Albert
Hi Martin,
viel Erfolg beim Termin.
Das ist nun wirklich keine leichte Aufgabe, im Internet eine Seite zu finden, die genauso beschi... reagiert wie das Intranet. :)
Ich füg dir mal den HTML an, in dem der Button liegen soll.
(input id="dlcCustomActionButton1" class="dlcToolBar" type="button" title="Neuer Verbesserungsvorschlag" onclick="doFolderAction('DlcFolder_ScriptActionPortalScript_HasParamsaaacjoiddleincigcfehbmadahdlnkpapdipjipk');" value="Neuer Verbesserungsvorschlag" accesskey="1">
AW: Web-Button auswählen
Martin

Hallo Albert,
wir waren beide blind. Herbers Excel-Forum ist doch das perfekte Beispiel, denn die Seite ist mit Frames und einem Suchfeld (siehe oben rechts im Menü) aufgebaut. Mit folgendem Code spreche wird das Wort "Test" in das Feld für die Listensuche eingetragen:
Sub Frames_Auslesen()
Dim IEApp As Object, objForm As Object, objControl As Object
Dim i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "https://www.herber.de/forum"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
'Listet die Frames auf
For i = 0 To IEApp.document.frames.Length - 1
Debug.Print "Frame: " & IEApp.document.frames(i).Name
For Each objForm In IEApp.document.frames(i).document.forms
Debug.Print "Form: " & objForm.Name
For Each objControl In objForm.Elements
With objControl
If .Name = "suchbegriff" Then .Value = "Test"
'Debug.Print "Name=" & .Name & ", Type=" & .Type & ", Value=" & .Value
End With
Next objControl
Next objForm
Next i
End Sub
Viele Grüße
Martin

Anzeige
kleiner Ergänzung: Statt "name" geht auch "ID"
07.03.2013 16:56:13
Martin
Hallo Albert,
weil das Suchfeld hier im Herbers Excelforum keine ID hat und nur über den Namen "suchbegriff" ansprechbar ist, musste ich es entsprechend ansprechen. Aber ebenso kann es natürlich über die ID angesprochen werden. Du musst also (neben der Internetadresse) folgenden Abschnitt im Makro so abändern:
Sub Frames_Auslesen()
Dim IEApp As Object, objForm As Object, objControl As Object
Dim i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "http://www.deine-intranetseite.de" 'Link ändern!
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
'Listet die Frames auf
For i = 0 To IEApp.document.frames.Length - 1
'Debug.Print "Frame: " & IEApp.document.frames(i).Name
For Each objForm In IEApp.document.frames(i).document.forms
'Debug.Print "Form: " & objForm.Name
For Each objControl In objForm.Elements
With objControl
If .ID = "CustomActionButton1" Then .Click
End With
Next objControl
Next objForm
Next i
End Sub
Viele Grüße
Martin

Anzeige
kleiner Ergänzung: Statt "name" geht auch "ID"
07.03.2013 16:56:48
Martin
Hallo Albert,
weil das Suchfeld hier im Herbers Excelforum keine ID hat und nur über den Namen "suchbegriff" ansprechbar ist, musste ich es entsprechend ansprechen. Aber ebenso kann es natürlich über die ID angesprochen werden. Du musst also (neben der Internetadresse) folgenden Abschnitt im Makro so abändern:
Sub Frames_Auslesen()
Dim IEApp As Object, objForm As Object, objControl As Object
Dim i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "http://www.deine-intranetseite.de" 'Link ändern!
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
'Listet die Frames auf
For i = 0 To IEApp.document.frames.Length - 1
'Debug.Print "Frame: " & IEApp.document.frames(i).Name
For Each objForm In IEApp.document.frames(i).document.forms
'Debug.Print "Form: " & objForm.Name
For Each objControl In objForm.Elements
With objControl
If .ID = "CustomActionButton1" Then .Click
End With
Next objControl
Next objForm
Next i
End Sub
Viele Grüße
Martin

Anzeige
Die (bessere) direkte Lösung...
07.03.2013 19:32:13
Martin
Hallo Albert,
ich habe mir überlegt, dass es sinnvoller ist die Controls deiner Intranet-Site direkt anzusprechen. Dir wird der Name des betreffenden Frames bekannt sein, darum solltest du den Frame auch namentlich ansprechen:
Beispiel für Herberts Excel-Forum:
IEApp.document.frames("top").document.forms(0).suchbegriff.Value = "Test"
Beispiel für deine Intranet-Site:
IEApp.document.frames("Framename").document.getElementByID("dlcCustomActionButton1").Click
Viele Grüße
Martin

Anzeige
AW: Die (bessere) direkte Lösung...
08.03.2013 11:27:04
Albert
Hi Michael,
danke für deine geniale Hilfe.
Ich hab sämtliche Codes ausprobiert, doch den Button hab ich noch nicht erreicht.
Des is wie verhext...
Folgendes Ergebnis kam im Debug.Print:
Frame: head
Frame: appletCode
Form: usrLogout
Frame: archive
Frame: dlcScriptFrame_8613e67596e5637c9c2e9a31b0ad8a3
Frame: code
Frame: search
Form: dlcSearchForm
Form: account
Frame: tree
Frame: user
Form: dlcFileTypeForm
Frame: cframe
Kannst du hier etwas rauslesen. Ich hab auch schon gesucht, auf welchem Table denn der Button liegt.
Ich könnt verzweifeln...
Dank und Gruß
A.

Anzeige
AW: Die (bessere) direkte Lösung...
08.03.2013 14:55:10
Martin
Hallo Albert,
ich hätte echt gedacht, dass inzwischen alles funktioniert. Bitte lasse mal folgenden Code über eure Intranet-Site laufen und poste mir das Debug-Ergebnis aus dem Direktfenster. Diesmal werden auch die Controls ausgelesen. Dann schreibe mir bitte welche Controls (Textfelder, Buttons usw.) du ansteuern möchtest.
Sub Frames_Auslesen()
Dim IEApp As Object, objForm As Object, objControl As Object
Dim i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "https://www.herber.de/forum" 'Link ändern!
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = 0 To IEApp.document.frames.Length - 1
'Listet die Frames auf
Debug.Print "Frame: " & IEApp.document.frames(i).Name
For Each objForm In IEApp.document.frames(i).document.forms
'Listet die Forms auf
Debug.Print "   Form: " & objForm.Name
For Each objControl In objForm.Elements
With objControl
'Listet die Controls auf
Debug.Print "       Control: " & .Name & "(Type: " & .Type & ", ID: " & .ID  _
& ")"
End With
Next objControl
Next objForm
Next i
End Sub
Viele Grüße
Martin

Anzeige
Web-Button auswählen
09.03.2013 18:03:08
Anton
Auch hallo,
so vllt:
Sub b()
Dim IEApp As Object, frame As Object
Dim ActionButton As Object, i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "intranet" 'anpassen
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = 0 To IEApp.document.frames.Length - 1
Set frame = IEApp.document.frames(i)
Set ActionButton = frame.document.getElementById("dlcCustomActionButton1")
If Not ActionButton Is Nothing Then
ActionButton.Click
Exit For
End If
Next
Set IEApp = Nothing
End Sub

mfg Anton

Anzeige
AW: Web-Button auswählen
11.03.2013 07:28:49
Albert
Guten Morgen Anton,
hab deinen Code eingefügt, aber es kommt keine Reaktion.
Ich befürchte, dass ich die ganzen Frames einzeln eingeben muss, um den Button zu erreichen.
Leider hab ich noch keine Ahnung, wie ich das anstellen muss... :(
Dank dir für deine Hilfe (oder hast du noch einen im Ärmel?)
Gruß
A.

Keine Antwort ist auch eine Antwort
11.03.2013 13:10:48
Martin
Hallo Albert,
der Code von Anton ist sehr gut und hätte theoretisch funktionieren müssen. Inzwischen vermute ich fast, dass innerhalb eines Frames eine Seite mit einem weiteren Frameset geladen wird. Aber nachdem ich jeden Tag auf eine Antwort von dir gewartet habe und ich nun feststellen muss, dass du meine Hilfe offensichtlich nicht mehr annehmen möchtest, erspare ich mir den Aufwand den Code für einen neuen Versuch umzuschreiben. Hier werden sich bestimmt viele andere darum reißen dir helfen zu dürfen.
Viele Grüße
Martin

Anzeige
AW: Keine Antwort ist auch eine Antwort
11.03.2013 15:19:08
Albert
Hi Martin,
nachdem ich heute den ersten Tag wieder im Büro bin und das File hier nur funktioniert,...
Nun ja, ich hab deine Codes heute vormittag nochmals getestet. Ich stimme dir zu, dass es sich wohl um einen weiteren Frame handelt.
Ich war bisher immer dankbar, wenn sich jemand bei den schwierigen Themen meiner angenommen hat. Und Feedback gabs auch immer. Deshalb versteh ich jetzt nicht, weshalb du mich anmachst.
Es gibt wenige Leute hier im Forum, die sich so gut auskennen wie du, Anton, Manfred, Klaus M. vdT., etc. Und ich fühl mich schon geehrt, wenn sich jemand zu meinen schei... komplizierten Themen äußert.
Lass uns bitte an einer Lösung des Problems arbeiten, denn du hast es auf alle Fälle nicht nötig Leute anzumotzen. Versteh's nicht falsch.
Antons Code läuft sauber durch, ohne Fehlermeldung. Aber, anscheinend dreht es sich doch um den besagten, noch unbekannten Frame, indem sich der CustomActionButton1 versteckt.
Dank & Gruß
A.

wenn die Vermutung von Martin stimmt,
11.03.2013 16:03:30
Martin
dann könnte man vllt sowas ausprobieren(ungetestet):
Sub b()
Dim IEApp As Object, frame As Object, frame1 As Object
Dim ActionButton As Object, i As Integer, j As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "intranet" 'anpassen
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Document.ReadyState = "complete"
For i = 0 To IEApp.Document.frames.Length - 1
Set frame = IEApp.Document.frames(i)
If frame.Document.frames.Length > 0 Then
For j = 0 To frame.Document.frames.Length - 1
Set frame1 = frame.Document.frames(j)
Set ActionButton = frame1.Document.getElementById("dlcCustomActionButton1")
If Not ActionButton Is Nothing Then
ActionButton.Click
Exit For
End If
Next
End If
Next
Set IEApp = Nothing
End Sub

mfg Anton

AW: das hat geklappt
11.03.2013 16:09:08
Albert
Hallo Anton, hallo Martin,
das hat geklappt. Bin saumäßig stolz... auf euch beide!
Vielen vielen herzlichen Dank.
Gruß
A.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige