Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blatt online ausfüllen mittels VBA (3)

Forumthread: 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.
Anzeige

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?
Anzeige
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?
Anzeige
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?
Anzeige
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
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige