ExcelVBA에서 IE에서 사용자 ID와 비밀번호를 입력하고 로그인합니다.

3349 단어 ExcelExcelVBA


Excel에 이런 느낌으로 사용자 이름/비밀번호가 쓰여 있고,
로그인 버튼으로 IE에서 connpass에 로그인하는 VBA를 만들었습니다.

※시트명은 「로그인 정보」

완성판 VBA 소스 코드



만든 VBA는 다음과 같습니다.

Sub login()

 Dim objIE As InternetExplorer 'IEオブジェクトを準備
 Set objIE = CreateObject("Internetexplorer.Application") '新しいIEオブジェクトを作成してセット

 objIE.Visible = True 'IEを表示

 Dim strUrl As String '次ページのURL
 strUrl = "https://connpass.com/login/"

 objIE.navigate strUrl 'IEでURLを開く

 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち

     DoEvents

 Loop


 Dim strUsername As String
 strUsername = Worksheets("ログイン情報").Range("C3").Value

 Dim strPassword As String
 strPassword = Worksheets("ログイン情報").Range("C4").Value

 Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備
 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット

 htmlDoc.getElementsByName("username")(0).Value = strUsername 'name="username"にユーザー名を入力
 htmlDoc.getElementsByName("password")(0).Value = strPassword  'name="password"にパスワードを入力
 htmlDoc.getElementById("login_form").submit  'フォームの内容を送信


End Sub


대상 HTML은 다음과 같습니다.

<form action="/login/" method="post" id="login_form">
        <h3 class="main_h3">connpassアカウントでログイン</h3>



        <p class="em mb_smallest">ユーザー名、またはメールアドレス</p>
        <p class="p text_center">
          <input name="username" class="gray_form" type="text" value="">
        </p>

        <p class="em mb_smallest">パスワード</p>
        <p class="p text_center">
          <input name="password" class="gray_form" type="password">
        </p>

        <p class="p text_center"><button class="btn btn_default" type="submit">ログインする</button></p>
        <input type="hidden" name="csrfmiddlewaretoken" value="g638HlpAm1I3B7qA9zSv8YpuYU8Tb6HE">
      </form>


소스 코드 참고로 한 사이트는 이쪽
【엑셀 VBA로 IE 조작】 유저명과 패스워드를 입력해 로그인을 한다

↑상기 사이트는 getElementById 메소드로 취득하고 있었습니다만, Id가 없었기 때문에 이하를 참고로 getElementsByName 메소드로 취득했습니다
VBA에서 IE의 텍스트 상자에 값 입력

오류 비망록



사용자 정의 유형이 정의되지 않았습니다.



컴파일 오류
필요한 라이브러리가 로드되지 않는 오류처럼. 그래서 처음에는 IE를 열 수 없었습니다.
해결 방법: 코드 실행을 중지한 후 [도구] > [참조 설정]에서 필요한 라이브러리 파일을 선택합니다.

개체는 이 속성 또는 메서드를 지원하지 않습니다.



런타임 오류.
직역하면, 「그런 프로퍼티 or 메소드는 뭐야 w」라는 것 같다.
잘 살펴보면 'getElementByName'이 되어 s가 빠졌습니다.
해결책: 속성 및 메서드 검토

감상



이것은 패스워드를 그대로 Excel상에 직접 쓰고 있기 때문에, 이전의 기사와 같이 패스워드를 복자로 한 상태로부터 패스워드를 취득해, 로그인할 수 있도록(듯이) 하고 싶다.
그리고 yahoo 메일과 같이, 유저 ID 입력 후 패스워드 입력의 화면에 우울한 패턴으로도 로그인할 수 있도록 하고 싶다.

좋은 웹페이지 즐겨찾기