Excel VBA 楽天RMS自動ログイン

ExcelVBA-実用編

今回は楽天のRMSに自動ログインするVBAをご説明します。

※IE操作はソースを変更された場合動かなくなる可能性があります。

楽天RMSに自動ログインするにはVBAでIEの操作をする必要があります。

IEの操作はVBAの中でも難易度の高い方かなと思います。

一応、サンプルファイルをダウンロードして頂き、IDとパスワードを書き換えてもらうだけで、動くように作成しています。

1.楽天RMSログインのサンプルコード

コードの後に簡単にご説明します。

全て標準モジュールに記載しています。

Option Explicit

'SleepAPI
#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

'IE最前面API
Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function ShowWindowAsync Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long _
) As Long

Const SW_RESTORE As Long = 9


Sub Rakuten_Login()

    Dim objIE       As InternetExplorer
    Dim WaitTime    As Long
    Dim i           As Long
    Dim FirstID     As String
    Dim FirstPW     As String
    Dim NextID      As String
    Dim NextPW      As String
    
    '=====================SET=====================
    
    FirstID = ""'1つめのID
    FirstPW = ""'1つめのパスワード
    NextID = ""'2つめのID
    NextPW = ""'2つめのパスワード
    WaitTime = 3'IE読み込み用の微調整待機時間
    
    '=============================================

    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    
    objIE.navigate "https://glogin.rms.rakuten.co.jp/"

    Call IE_Wait(objIE)
    Call Manual_Wait(WaitTime)
    
    'ウィンドウが最小化されているかのチェック
    If IsIconic(objIE.hWnd) Then
        ShowWindowAsync objIE.hWnd, SW_RESTORE
    End If
    
    'IEを最前面に表示
    SetForegroundWindow (objIE.hWnd)
    
    'パスワードボックスに値を入力
    objIE.document.getElementsByName("login_id")(0).Value = FirstID
    objIE.document.getElementsByName("passwd")(0).Value = FirstPW
    
    '送信ボタンをクリック
    objIE.document.getElementsByName("submit")(0).Click
    
    Call IE_Wait(objIE)
    Call Manual_Wait(WaitTime)
    
    '2つ目のパスワードボックスに値を入力
    objIE.document.getElementsByName("user_id")(0).Value = NextID
    objIE.document.getElementsByName("user_passwd")(0).Value = NextPW
    
    '送信ボタンをクリック
    objIE.document.getElementsByName("submit")(0).Click
    
    Call IE_Wait(objIE)
    Call Manual_Wait(WaitTime)
    
    '次へクリック
    objIE.document.getElementsByName("submit")(0).Click
    
    Call IE_Wait(objIE)
    Call Manual_Wait(WaitTime)
    
    'IEウィンドウをJavaScriptで自動スクロール
    'スクロールしないと反応しない
    For i = 1 To 2
    
        objIE.document.Script.setTimeout "javascript:scrollTo(0," & objIE.document.body.scrollHeight & ");", 100
        
        Sleep 100
    
    Next i
    
    '送信ボタンをクリック
    Call TagClick(objIE, "button", "上記を遵守していることを確認の上")

End Sub

Function IE_Wait(ByRef objIE As Object)

    Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
    
        DoEvents
        
    Loop

End Function

Function Manual_Wait(ByVal WaitTime As Long)

    Dim ExecutTime  As Date
 
    ExecutTime = DateAdd("s", WaitTime, Now)
 
    While Now < ExecutTime
    
        DoEvents
        
    Wend
    
End Function

Function TagClick(objIE As InternetExplorer, _
                TagName As String, _
                TagStr As String)
                
    Dim objTag As Variant
                
    For Each objTag In objIE.document.getElementsByTagName(TagName)
    
        If InStr(objTag.outerHTML, TagStr) > 0 Then
        
            objTag.Click
            
            Call IE_Wait(objIE)
            
            Exit For
        
        End If
    
    Next

End Function

上から順番に説明します。

「SleepAPI」は今回は使用していませんが、環境によってはSleepで微調整が必要かと思いましたのでAPIの宣言しています。

「IE最前面API」はIEを起動した際に、最前面にするためのAPIです。

こちらは必須ではありません。

「Sub Rakuten_Login()」でログインのメインプロセスを記載しています。

SETの部分に、各パスワードとIDを文字列として入力して頂くと、ログインできます。

1つ目のIDとPWを入力して、画面遷移を行い、2つ目のIDとPWを入力して画面遷移を行います。

次に「次へ」ボタンをクリックして、最後の画面で「上記を遵守していることを確認の上」のボタンをクリックしています。

このボタンはスクロールしてからじゃないと、クリックしても反応しないようです。

「Function IE_Wait」はIEの読み込みを待機しています。

これがないと、IE画面遷移前に次の実行が行われてエラーになります。

「Function Manual_Wait」は変数の「WaitTime 」で指定した時間分意図的に待機させます。

「Function TagClick」はタグとテキストを指定して、指定されたタグをループで探してクリックしています。

実用編なので、簡単な説明でした。

ブラウザの操作はソースが変更されると動かなくなりますので、現時点で動いていたものでも、変更に伴い動かなくなる可能性もございますので、ご了承ください。

2.サンプルファイル ダウンロード

こちらからログイン用のVBAが記載しているファイルをダウンロードできます。

VBEを開いていただき、SET部分のIDとPWを2つ入力して、頂くとご自身の環境でも動くと思います。

タイトルとURLをコピーしました