ExcelVBA에서 IE에서 사용자 ID 및 비밀번호 ( "*"로 마스크)를 입력하여 로그인합니다.

3520 단어 VBAExcelExcelVBA
이전 게시한 다음 두 기사의 내용을 혼합했습니다.
Excel에서 비밀번호를 "*"로 표시
ExcelVBA에서 IE에서 사용자 ID와 비밀번호를 입력하고 로그인합니다.

시트 1에는 다음 로그인 버튼이 있습니다.


시트 2에는 다음 로그인 버튼이 있습니다.


같은 매크로를 사용하여 어느 쪽이든 로그인 할 수 있도록 만들었습니다.

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 = GetUsername

    Dim strPassword As String
    strPassword = GetPassword


    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

Function GetUsername() As String

    Dim username As String
    username = ActiveSheet.Range("C3").Value 'ユーザー名を取得する
    GetUsername = username

End Function

Function GetPassword() As String

    Dim password As String
    If Range("C4").Value = "" Then
        password = ActiveSheet.OLEObjects("TextBox3").Object.Value 'パスワードをテキストボックスから取得する
    Else
        password = Range("C4").Value  'パスワードをセルから取得する
    End If
    GetPassword = password

End Function


비망록



ActiveX 컨트롤을 사용할 때 OLEObject 사용



텍스트 상자에서 값을 얻는 방법을 조사하고 처음에는 "strPassword = TextBox3.Value"라고 썼습니다.
그러면 "객체가 필요합니다"라는 오류에.
이쪽으로는 객체가 있는 잖아··라고 생각하면서.
그러나 ActiveX 컨트롤의 개체는 검색 방법이 다른 것 같습니다.

각 OLEObject 개체는 ActiveX 컨트롤, 연결된 OLE 개체 또는 포함된 OLE 개체를 나타냅니다.

OLEObjects 개체(Excel)

★ ActiveX 컨트롤을 사용할 때는 OLEObject를 사용하는 것

반환값을 돌려주는 메소드에는, Function 프로시저를 사용하는 것



이번 유저 네임을 취득하는 곳과 패스워드를 취득하는 곳을, 밖에 내 보았습니다.
그러나 꽤 잘 작동하지 않는 이유는 "Sub 프로 시저"와 "Function 프로 시저"의 차이를 알지 못했기 때문입니다.

Sub 프로 시저 : 반환 값 없음
Function 프로 시저 : 반환 값을 반환 할 수 있습니다.

【VBA】Sub/Function 프로시저의 차이와 사용법 【Excel 매크로】

처음에는 Sub 프로 시저로 작성했기 때문에 반환 값을받지 못한 것 같습니다.

★ 반환값을 돌려주는 메소드에는, Function 프로시저를 사용하는 것

좋은 웹페이지 즐겨찾기