パスワードとIDで自動ログインしたWEBからテーブルデータをエクセルに抽出

最近の書き込み件数: 今日 0件、昨日 0件
未読分:2件

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)


Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

Message#2 2018年1月4日(木)19時27分
From: ジャッカル
返事 削除 変更
TDが小文字とかない?

> 本を購入させて戴いて、VBAでSUICAのIDとPasswordを自動的に入力して、テーブルをWEB上で表示させる事は出来たのですが、Tableデータをエクセル上に書き込む方法がうまくいきません。
>
> 既に自動で開いたWebを参照したいのと、Tableのデータを全て、エクセルに書き込みたいのですが、うまく出来ません。
> 宜しくお願いします。
>
> 下記が、エクセルに読み込みたいテーブルのデータと参考にしているVBAと自動ログインのVBAです。
>
> </table>
> <!-- /■ 利用履歴を参照するSuica -->
> <p><img src="/frsis/img/spacer.gif" width="1" height="15" border="0" alt=""></p>
> <table cellSpacing="0" cellPadding="0" width="545" border="0">
> <!-- ■ SF利用履歴 -->
> <tr>
> <td align="left">
> <input type="image" height="28" alt="印刷(PDF)" width="106" src="/frsis/img/b_print.gif" border="0" name="PRINT">
> </td>
> </tr>
> <tr>
> <td class="grybg01">
> <table cellSpacing="0" cellPadding="8" width="545" border="0">
> <tr>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="12%"><font class="tx-wht">月/日</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="13%"><font class="tx-wht">種別</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="16%"><font class="tx-wht">利用場所</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="13%"><font class="tx-wht">種別</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="16%"><font class="tx-wht">利用場所</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="15%"><font class="tx-wht">残額</font></td>
> <td style="border:1px solid gray" class="pad08 grybg02" align="center" width="15%"><font class="tx-wht">差額</font></td>
> </tr>
> <tr><td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">12/24</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">入</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">川崎  </font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">出</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">蒲田  </font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="right"><font class="ml">\13,492</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="right"><font class="ml">-154</font></td>
> </tr><tr><td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">12/24</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">入</font></td>
> <td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">蒲田  </font></td>
> <td style="border:1px solid gray
>
>
> Sub GetTable4()
> Dim ie As InternetExplorer
> Dim Doc As HTMLDocument
> Dim ObjTag As Object
> Dim i As Long
> Dim n As Long
>
> Set ie = CreateObject("InternetExplorer.Application")
> ie.Visible = True
> ie.navigate "http://book.impress.co.jp/appended/3384/4-10_3.html" '"http://kakaku.com/pc/note-pc/se_15/"
> Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
> DoEvents
> Loop
> Set Doc = ie.document
>
> Sheets("Sheet3").Select
> Cells.ClearContents
> Cells.NumberFormatLocal = "G/標準"
>
> For i = 537 To 855
> If Doc.all(i).tagName = "TD" Then
> n = n + 1
> Cells(Int((n - 1) / 16) + 1, (n - 1) Mod 16 + 1) = Doc.all(i).innerText
> End If
> Next i
>
> Cells.EntireColumn.AutoFit
> Cells.EntireRow.AutoFit
>
> End Sub
>
>
>
> 下記が、うまく動いている自動ログインのVBAです。
>
>
> Option Explicit
>
>
> #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 SUICA2()
>
> Dim objIE As InternetExplorer
> Dim objInpTxt As HTMLInputTextElement
> Dim ObjTag As Object
> Dim SuicaID As String
> Dim SuicaPW As String
>
> Sheets("Main").Select
> SuicaID = Range("C6").Value
> SuicaPW = Range("C7").Value
>
>
>
> 'InternetExplorerでスイカのページを起動
> Call ieView(objIE, "https://www.suicainternetservice.com/frmcsis/ka/cm/SISCheckGenerallyProgress.aspx?CLSendId=SFSCMMEPC01&CLRecvId=SFRIQIRPC34")
>
>
> 'ボックスにIDを入力
> objIE.document.forms(1).CommonID.Value = SuicaID
> 'ボックスにPasswordを入力
> objIE.document.forms(1).Password.Value = SuicaPW
>
>
> 'image(ボタン)をクリック
> For Each ObjTag In objIE.document.getElementsByTagName("input")
>
> If InStr(ObjTag.outerHTML, "My JR-EAST IDでログイン") > 0 Then
>
> 'imageボタンクリック
> ObjTag.Click
>
> 'IEが完全表示されるまで待機
> Call ieCheck(objIE)
>
> 'ループ脱出
> Exit For
>
> End If
> Next
>
> 'image(ボタン)をクリック
> For Each ObjTag In objIE.document.getElementsByTagName("input")
>
> If InStr(ObjTag.outerHTML, "次へ(内容確認)") > 0 Then
>
> 'imageボタンクリック
> ObjTag.Click
>
> 'IEが完全表示されるまで待機
> Call ieCheck(objIE)
>
> 'ループ脱出
> Exit For
>
> End If
> Next
>
>
>
>
> End Sub
>
> Sub ieView(objIE As InternetExplorer, _
> urlName As String, _
> Optional viewFlg As Boolean = True, _
> Optional ieTop As Integer = 0, _
> Optional ieLeft As Integer = 0, _
> Optional ieWidth As Integer = 600, _
> Optional ieHeight As Integer = 800)
>
> 'IE(InternetExplorer)のオブジェクトを作成する
> Set objIE = CreateObject("InternetExplorer.Application")
>
> With objIE
>
> 'IE(InternetExplorer)を表示・非表示
> .Visible = viewFlg
>
> .Top = ieTop 'Y位置
> .Left = ieLeft 'X位置
> .Width = ieWidth '幅
> .Height = ieHeight '高さ
>
> '指定したURLのページを表示する
> .navigate urlName
>
> End With
>
> 'IE(InternetExplorer)が完全表示されるまで待機
> Call ieCheck(objIE)
>
> End Sub
>
> Sub ieCheck(objIE As InternetExplorer)
>
> Dim timeOut As Date
>
> '完全にページが表示されるまで待機する
> timeOut = Now + TimeSerial(0, 0, 20)
>
> Do While objIE.Busy = True Or objIE.readyState <> 4
> DoEvents
> Sleep 1
> If Now > timeOut Then
> objIE.Refresh
> timeOut = Now + TimeSerial(0, 0, 20)
> End If
> Loop
>
> timeOut = Now + TimeSerial(0, 0, 20)
>
> Do While objIE.document.readyState <> "complete"
> DoEvents
> Sleep 1
> If Now > timeOut Then
> objIE.Refresh
> timeOut = Now + TimeSerial(0, 0, 20)
> End If
> Loop
>
> End Sub
>
> Sub LoginClick()
>
> Dim ObjTag As Object
>
> 'image(ボタン)をクリック
> For Each ObjTag In objIE.document.getElementsByTagName("input")
>
> If InStr(ObjTag.outerHTML, "My JR-EAST IDでログイン") > 0 Then
>
> 'imageボタンクリック
> ObjTag.Click
>
> 'IEが完全表示されるまで待機
> Call ieCheck(objIE)
>
> 'ループ脱出
> Exit For
>
> End If
> Next
>
> End Sub

Message#1 2017年12月25日(月)18時52分
From: 丹羽英人
返事 削除 変更
本を購入させて戴いて、VBAでSUICAのIDとPasswordを自動的に入力して、テーブルをWEB上で表示させる事は出来たのですが、Tableデータをエクセル上に書き込む方法がうまくいきません。

既に自動で開いたWebを参照したいのと、Tableのデータを全て、エクセルに書き込みたいのですが、うまく出来ません。
宜しくお願いします。

下記が、エクセルに読み込みたいテーブルのデータと参考にしているVBAと自動ログインのVBAです。

</table>
<!-- /■ 利用履歴を参照するSuica -->
<p><img src="/frsis/img/spacer.gif" width="1" height="15" border="0" alt=""></p>
<table cellSpacing="0" cellPadding="0" width="545" border="0">
<!-- ■ SF利用履歴 -->
<tr>
<td align="left">
<input type="image" height="28" alt="印刷(PDF)" width="106" src="/frsis/img/b_print.gif" border="0" name="PRINT">
</td>
</tr>
<tr>
<td class="grybg01">
<table cellSpacing="0" cellPadding="8" width="545" border="0">
<tr>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="12%"><font class="tx-wht">月/日</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="13%"><font class="tx-wht">種別</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="16%"><font class="tx-wht">利用場所</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="13%"><font class="tx-wht">種別</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="16%"><font class="tx-wht">利用場所</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="15%"><font class="tx-wht">残額</font></td>
<td style="border:1px solid gray" class="pad08 grybg02" align="center" width="15%"><font class="tx-wht">差額</font></td>
</tr>
<tr><td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">12/24</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">入</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">川崎  </font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">出</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">蒲田  </font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="right"><font class="ml">¥13,492</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="right"><font class="ml">-154</font></td>
</tr><tr><td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">12/24</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">入</font></td>
<td style="border:1px solid gray" class="pad08 whtbg" align="center"><font class="ml">蒲田  </font></td>
<td style="border:1px solid gray


Sub GetTable4()
Dim ie As InternetExplorer
Dim Doc As HTMLDocument
Dim ObjTag As Object
Dim i As Long
Dim n As Long

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://book.impress.co.jp/appended/3384/4-10_3.html" '"http://kakaku.com/pc/note-pc/se_15/"
Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Set Doc = ie.document

Sheets("Sheet3").Select
Cells.ClearContents
Cells.NumberFormatLocal = "G/標準"

For i = 537 To 855
If Doc.all(i).tagName = "TD" Then
n = n + 1
Cells(Int((n - 1) / 16) + 1, (n - 1) Mod 16 + 1) = Doc.all(i).innerText
End If
Next i

Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit

End Sub



下記が、うまく動いている自動ログインのVBAです。


Option Explicit


#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 SUICA2()

Dim objIE As InternetExplorer
Dim objInpTxt As HTMLInputTextElement
Dim ObjTag As Object
Dim SuicaID As String
Dim SuicaPW As String

Sheets("Main").Select
SuicaID = Range("C6").Value
SuicaPW = Range("C7").Value



'InternetExplorerでスイカのページを起動
Call ieView(objIE, "https://www.suicainternetservice.com/frmcsis/ka/cm/SISCheckGenerallyProgress.aspx?CLSendId=SFSCMMEPC01&CLRecvId=SFRIQIRPC34")


'ボックスにIDを入力
objIE.document.forms(1).CommonID.Value = SuicaID
'ボックスにPasswordを入力
objIE.document.forms(1).Password.Value = SuicaPW


'image(ボタン)をクリック
For Each ObjTag In objIE.document.getElementsByTagName("input")

If InStr(ObjTag.outerHTML, "My JR-EAST IDでログイン") > 0 Then

'imageボタンクリック
ObjTag.Click

'IEが完全表示されるまで待機
Call ieCheck(objIE)

'ループ脱出
Exit For

End If
Next

'image(ボタン)をクリック
For Each ObjTag In objIE.document.getElementsByTagName("input")

If InStr(ObjTag.outerHTML, "次へ(内容確認)") > 0 Then

'imageボタンクリック
ObjTag.Click

'IEが完全表示されるまで待機
Call ieCheck(objIE)

'ループ脱出
Exit For

End If
Next




End Sub

Sub ieView(objIE As InternetExplorer, _
urlName As String, _
Optional viewFlg As Boolean = True, _
Optional ieTop As Integer = 0, _
Optional ieLeft As Integer = 0, _
Optional ieWidth As Integer = 600, _
Optional ieHeight As Integer = 800)

'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")

With objIE

'IE(InternetExplorer)を表示・非表示
.Visible = viewFlg

.Top = ieTop 'Y位置
.Left = ieLeft 'X位置
.Width = ieWidth '幅
.Height = ieHeight '高さ

'指定したURLのページを表示する
.navigate urlName

End With

'IE(InternetExplorer)が完全表示されるまで待機
Call ieCheck(objIE)

End Sub

Sub ieCheck(objIE As InternetExplorer)

Dim timeOut As Date

'完全にページが表示されるまで待機する
timeOut = Now + TimeSerial(0, 0, 20)

Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop

timeOut = Now + TimeSerial(0, 0, 20)

Do While objIE.document.readyState <> "complete"
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop

End Sub

Sub LoginClick()

Dim ObjTag As Object

'image(ボタン)をクリック
For Each ObjTag In objIE.document.getElementsByTagName("input")

If InStr(ObjTag.outerHTML, "My JR-EAST IDでログイン") > 0 Then

'imageボタンクリック
ObjTag.Click

'IEが完全表示されるまで待機
Call ieCheck(objIE)

'ループ脱出
Exit For

End If
Next

End Sub

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com