アップロード画面への遷移まで
17/05/26追記:Googleへのログインのインターフェースが変わったので現在機能しません。
17/05/31追記:よくわからないClassNameでログインアカウントを選択してよいなら改修できそうな気がする
なお、引っ掛かるのは「(4)ログインアカウントの選択」の工程
クラス名の意味が良くわからないのでこれ使っていいのか悩んでいるところ
定数
Public Const YOURID As String = "【YouTubeアカウント】" Public Const YOURPWD As String = "【YouTubeパスワード】"
(1)YTトップページに遷移
Public Function YT_Navigate() As InternetExplorer Dim ie As InternetExplorer: Set ie = New InternetExplorer ie.navigate "https://www.youtube.com/": Call ieCheck(ie) ie.Visible = True ' Debug.Print "YTトップページに遷移" Set YT_Navigate = ie End Function
(2)YTログアウト
Public Function YT_Logout(ie As InternetExplorer) As Boolean 'ie As InternetExplorer Dim dom As HTMLDocument Dim el As IHTMLElement ie.Visible = True 'debug Set dom = ie.document For Each el In dom.getElementsByTagName("a") ' Debug.Print el.getAttribute("href"), el.innerText If Trim(el.innerText) = "ログアウト" Then el.click Call ieCheck(ie) YT_Logout = True ' Debug.Print "ログアウトに成功" Exit Function End If Next el YT_Logout = False 'ログアウト済、という認識になるのかな ' Debug.Print "ログアウトボタンなし(ログアウト済)" End Function
(3)YTログインボタンを押下
Public Function YT_Login_Click(ie As InternetExplorer) As Boolean Dim dom As HTMLDocument Dim el As IHTMLElement Set dom = ie.document For Each el In dom.getElementsByTagName("a") If Trim(el.innerText) = "ログイン" Then el.click Call ieCheck(ie) YT_Login_Click = True ' Debug.Print "ログインボタン押下に成功" Exit Function End If Next el ' Debug.Print "ログインボタン押下に失敗" YT_Login_Click = False End Function
(4)ログインアカウントの選択
Public Function YT_SelectLoginAccount(ie As InternetExplorer, sId As String) As Boolean Dim dom As HTMLDocument: Set dom = ie.document Dim el As IHTMLElement For Each el In dom.getElementsByTagName("button") If el.Value = sId Then el.click Call ieCheck(ie) ' Debug.Print "アカウント選択に成功" YT_SelectLoginAccount = True Exit Function End If Next el YT_SelectLoginAccount = False ' Debug.Print "アカウント選択に失敗" End Function
(5)パスワードを入力し、「ログイン」ボタンを選択
Public Function YT_Login(ie As InternetExplorer, sId As String, sPwd As String) As Boolean Dim dom As HTMLDocument Set dom = ie.document Call dom.getElementById("Passwd").setAttribute("value", sPwd) dom.getElementById("signIn").click Call ieCheck(ie) YT_Login = True Debug.Print "ログイン成功" End Function
(6)アップロード画面に遷移
Public Function YT_NavigateUpload(ie As InternetExplorer) As Boolean Dim dom As HTMLDocument Dim el As IHTMLElement Set dom = ie.document For Each el In dom.getElementsByTagName("a") If el.getAttribute("title") = "アップロード" Then el.click Call ieCheck(ie) YT_NavigateUpload = True Exit Function End If Next el YT_NavigateUpload = False End Function
これまでのまとめ。
Public Sub YT_Prepare() Dim sId As String: sId = YOURID Dim sPwd As String: sPwd = YOURPWD Dim ie As InternetExplorer: Set ie = YT_Navigate() Dim i As Long Debug.Print "ログアウト:", YT_Logout(ie) i = 0 Do Until YT_Login_Click(ie) i = i + 1 Debug.Print i & "回目ログインボタン押下失敗。0.5秒待ちます。" Call MySleep(500) Loop Debug.Print "アカウント選択:", YT_SelectLoginAccount(ie, sId) Debug.Print "ログイン:", YT_Login(ie, sPwd) Debug.Print "アップロード画面に遷移:", YT_NavigateUpload(ie) End Sub