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

Blatt online ausfüllen mittels VBA (3)

Blatt online ausfüllen mittels VBA (3)
07.03.2020 10:26:49
Gerald
Mit dem im Forum Gelernten - hier ein dickes Dankeschön an Anton - konnte ich inzwischen fast 20 Seiten automatisieren. Mit Schleifenbildung und Variablen komme ich inzwischen gut zurecht.
Nun habe ich ein Problem neuer Qualität, wo ich nicht weiter weiß.
https://www.herber.de/bbs/user/135642.html
Ich muss Files hochladen. Dafür habe ich folgende Eingangsinformationen:
- Pfad und Dateiname (zB. C:\temp\test.pdf)
- Description Type (zB. Description of Device)
- Confidentiality (Ja / Nein)
Außerdem muss ich die Applikation Nummer (hier im Beispiel "010837133-001") aus der angezeigten Webseite zurücklesen in eine Variable.
Hier komme ich einfach nicht weiter.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blatt online ausfüllen mittels VBA (3)
07.03.2020 13:00:03
volti
Hallo Gerald,
schau mal, ob Du mit u.a. Code Deine gewünschte Applikationsnummer bekommst:
Sub HoleWert()
 Debug.Print "Applikation Nummer = " & GetValueFromWeb()
End Sub
Function GetValueFromWeb()
 Dim oIE As Object, sUrl As String, oNode As Object
 sUrl = "https://www.herber.de/bbs/user/135642.html"
 Set oIE = CreateObject("InternetExplorer.application")
 oIE.Navigate2 sUrl                                     'Zur Url surfen
 oIE.Visible = False
 While Not oIE.ReadyState = 4: DoEvents: Wend           'Warten bis Seite geladen ist
 Set oNode = oIE.document.getElementById("wb-cont")
 If Not oNode Is Nothing Then
  GetValueFromWeb = oNode.all.tags("span")(0).outerText
 End If
 oIE.Quit
 Set oIE = Nothing
 Set oNode = Nothing
End Function

viele Grüße
Karl-Heinz

Anzeige
Blatt online ausfüllen mittels VBA (3)
08.03.2020 15:50:04
Anton
Hallo Gerald,
Code in Zwischenablage:

Sub b()
  Dim IEApp As Object, opt As Object, appnr As String    
  Set IEApp = CreateObject("InternetExplorer.Application")  
  With IEApp
    .Visible = True
    .Navigate "https://www.herber.de/bbs/user/135642.html"
    Do: Loop Until .Busy = False    
    Do: Loop Until .Busy = False    
    Do: Loop Until .Document.ReadyState = "complete"    
   'Applikation Nummer in Variable:
    appnr = .Document.getelementsbyclassname("color-medium")(0).innertext
   'Description Type auswählen:
    For Each opt In .Document.getelementbyid("letterType").Options    
      If opt.innertext = "Description of Device" Then  
        opt.Selected = True  
        Exit For  
      End If  
    Next
   'Confidentiality Ja = True:
    .Document.getelementbyid("confidential").Checked = True  
   'Vorbelegen des <input type="file" ...> mit C:\temp\test.pdf ist IMHO nicht möglich,
   'siehe auch https://wiki.selfhtml.org/wiki/HTML/Formulare/input/Datei-Upload,
   'aber anclicken:
    .Document.getelementbyid("txtFile").Click
  End With  
  Set IEApp = Nothing  
End Sub

mfg Anton
Anzeige
AW: Blatt online ausfüllen mittels VBA (3)
09.03.2020 15:29:39
Gerald
Das Zurücklesen der Application Nummer klappt schon mal.
Ich habe versucht den Dateinamen mit einem Powershell Fenster aus VBA raus zu machen, nach beiliegenden Vorbild:
https://stackoverflow.com/questions/42721288/manipulate-ie-with-vba-and-a-modal-form
Funtioniert leider,bei mir, nicht mangels Powershell kenntnissen. (Shell poppt nur 0.5s kurz auf)
Lässt sich sowas realisieren?
AW: Blatt online ausfüllen mittels VBA (3)
09.03.2020 18:41:46
Anton
Hallo Gerald,
probier's hiermit:
Code in Zwischenablage:

Sub b()
  Dim IEApp As Object, opt As Object, appnr As String    
  Dim fso As Object, vbscript As Object  
  Dim pfad_vbs As String, inhalt_vbs As String, pfad_pdf As String  
 
  pfad_vbs = ThisWorkbook.Path & "\temp.vbs"
  pfad_pdf = "C:\Temp\1.pdf" 'anpassen
  inhalt_vbs = inhalt_vbs & "Set WshShell = CreateObject(""WScript.Shell"")" & vbCrLf  
  inhalt_vbs = inhalt_vbs & "WScript.Sleep 1000" & vbCrLf
  inhalt_vbs = inhalt_vbs & "WshShell.AppActivate ""Hochladen""" & vbCrLf
  inhalt_vbs = inhalt_vbs & "WScript.Sleep 100" & vbCrLf
  inhalt_vbs = inhalt_vbs & "WshShell.SendKeys " & Chr(34) & pfad_pdf & Chr(34) & vbCrLf
  inhalt_vbs = inhalt_vbs & "WScript.Sleep 100" & vbCrLf
  inhalt_vbs = inhalt_vbs & "WshShell.SendKeys ""{ENTER}""" & vbCrLf
 
  Set fso = CreateObject("Scripting.FileSystemObject")  
  Set vbscript = fso.CreateTextFile(pfad_vbs, True)  
  vbscript.Write (inhalt_vbs)
  vbscript.Close
  Set fso = Nothing  
  Set IEApp = CreateObject("InternetExplorer.Application")  
  With IEApp
    .Visible = True
    .Navigate "https://www.herber.de/bbs/user/135642.html"
    Do: Loop Until .Busy = False    
    Do: Loop Until .Busy = False    
    Do: Loop Until .Document.ReadyState = "complete"    
   'Applikation Nummer in Variable:
    appnr = .Document.getelementsbyclassname("color-medium")(0).innertext
   'Description Type auswählen:
    For Each opt In .Document.getelementbyid("letterType").Options    
      If opt.innertext = "Description of Device" Then  
        opt.Selected = True  
        Exit For  
      End If  
    Next
   'Confidentiality Ja = True:
    .Document.getelementbyid("confidential").Checked = True  
   'Vorbelegen des <input type="file" ...> mit C:\temp\test.pdf:
    Shell "wscript " & Chr(34) & pfad_vbs & Chr(34), vbHide
    .Document.getelementbyid("txtFile").Click
  End With  
  Set IEApp = Nothing  
End Sub

mfg Anton
Anzeige
AW: Blatt online ausfüllen mittels VBA (3)
10.03.2020 13:51:49
Gerald
Das funktioniert hervorragend!
Ein kleines Problem mit meinen Quelldateien, die immer runde Klammern und Leerzeichen beinhalten.
„C:\Susi(Peter)\Karl Gabi.pdf“ schluckt er nicht.
Das Leereichen macht wohl keine Probleme aber die Klammer „()“ wird einfach wegschmissen.
Kann man den String „C:\Susi(Peter)\Karl Gabi.pdf“ so übersetzten, damit dieser akzeptiert wird?
AW: Blatt online ausfüllen mittels VBA (3)
10.03.2020 19:18:10
Anton
Hallo Gerald,
Kann man den String „C:\Susi(Peter)\Karl Gabi.pdf“ so übersetzten, damit dieser akzeptiert wird?
siehe die SendKeys Anweisung. Link in einem eigenem Tab oder Fenster öffnen.
mfg Anton
Anzeige
AW: Blatt online ausfüllen mittels VBA (3)
11.03.2020 15:13:24
Gerald
Hallo Anton,
Perfekt!
Habe entsprechend deiner Anleitung ein simples
'---- Pfade aufbereiten für SendKey ----
For Each Sign In Array("+", "%", "~", "(", ")")
Path_and_File(i) = Replace(Path_and_File(i), Sign, "{" & Sign & "}")
Next Sign

vorgeschaltet.
Woher weißt du sowas? Machst du das beruflich?
AW: Blatt online ausfüllen mittels VBA (3)
12.03.2020 21:01:24
Anton
Hallo Gerald,
Woher weißt du sowas?
Tante Google hilft :-)
Machst du das beruflich?
Nein, nur hobymäsig.
mfg Anton

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige