#趣旨
ほんの少しだけでも自動化することで、
大きくストレスが軽減されることがあるよねっていう例
ブラウザを起動してログインするための部品です
そのまま使えることはない
URLやパスワード以外にもカスタマイズが必要です。
VBAProject
参照設定はMicrosoft Internet Controls
IE_login)Internet Explorer用の処理はライブラリを使って正攻法
chr_login)Google Chrome用はSendKeys,sleepを使って力技
Module1.bas
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
Sub ADM0001()
Call IE_login("https://www.pokemoon.net:8081/lg/", "ADM0001", "new+new")
End Sub
Sub ADM0002()
Call IE_login("https://www.pokemoon.net:8082/lg/", "ADM0002", "nekoneko")
End Sub
Sub ADM0001ch()
Call chr_login("https://www.pokemoon.net:8081/lg/", "ADM0001", "new{+}new") 'エスケープが必要
End Sub
Sub ADM0002ch()
Call chr_login("https://www.pokemoon.net:8082/lg/", "ADM0002", "nekoneko") 'エスケープが必要
End Sub
Function IE_login(pUrl As String, _
pId As String, _
pPs As String)
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate pUrl
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
With htmlDoc
.getElementById("PUSERID").Value = pId
.getElementById("PPASSWORD").Value = pPs
End With
Set htmlDoc = Nothing
objIE.navigate "javascript:J_FORM_SUBMIT()"
Set objIE = Nothing
End Function
Function chr_login(pUrl As String, _
pId As String, _
pPs As String)
Dim objChr As Object
Set objChr = CreateObject("WScript.Shell")
objChr.Run ("chrome.exe -url " & pUrl)
Sleep 4000
SendKeys pId, True
SendKeys "{ENTER}", True
SendKeys "{TAB}", True
Sleep 1000
SendKeys pPs, True
SendKeys "{ENTER}", True
Set objChr = Nothing
End Function
//2019/09/19
関数の呼び出しをDebug.Printでやってる謎の部分をちゃんとCallに直すと、
メモリが足りませんが出なくなりました。とほほ
#先達 参考 Special Thanks
大変ありがとうございます
【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
https://tonari-it.com/vba-ie-wait/#toc3
タブーの小技 パスワードクリップ BAT/VBA/Javascript
https://qiita.com/lamp/items/7c36efbae41bd30b7774
これの続き