teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

文法の修正

2019/10/03 14:23

投稿

wing283
wing283

スコア123

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,7 @@
13
13
  ### 該当のソースコード
14
14
 
15
15
  ```ここに言語を入力
16
+
16
17
  '変数を必ず定義すると宣言
17
18
  Option Explicit
18
19
 
@@ -31,52 +32,70 @@
31
32
  j = 0 '変数を初期化
32
33
 
33
34
  'Internet Exploreを立ち上げる
34
- Dim objIE As Object 'IEオブジェクト参照用
35
35
  Set objIE = CreateObject("InternetExplorer.Application")
36
36
  objIE.Visible = True
37
+
38
+ 'URLを指定する
37
- objIE.Navigate "http://hogeho.ge/login.php"
39
+ objIE.Navigate2 "http://hogeho.ge/login.php"
38
40
 
39
- '該当のWebサイトが表示されるのを待つ
40
- While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
41
+ Do While objIE.Busy = True Or objIE.readyState <> 4
41
- DoEvents
42
+ DoEvents
42
- Wend
43
+ Loop
43
-
44
-
44
+
45
- Dim htmlDoc As HTMLDocument
45
+ Dim htmlDoc As HTMLDocument
46
46
  Set htmlDoc = objIE.Document
47
47
 
48
48
  With htmlDoc
49
- .getElementById("login").Value = "XXXXXXXXXX" 'ユーザー名を指定
49
+ .getElementById("login").Value = "XXXXXXXXX" 'ユーザー名を指定
50
50
  .getElementById("pass").Value = "AAAAAAAAAA" 'パスワードを指定
51
51
  .getElementById("submit").Click
52
52
  End With
53
53
 
54
- Do While objIE.Busy = True Or objIE.readyState <> 4
55
- DoEvents
56
- Loop
57
54
 
58
55
  Set ieDoc = objIE.Document 'ログイン後のページのHTMLを読み込む
59
56
 
60
-
61
- For Each obj In ieDoc.getElementsByTagName("table") 'tableタグを一つずつを変数objにセット
57
+
62
- For Each obj2 In obj.getElementsByTagName("tr") 'trタグを一つずつを変数objにセット
63
- j = j + 1 '行カウンター1アップ
58
+ '該当のWebサイトが表示されるの待つ
64
- i = 0
65
- For Each obj3 In obj2.getElementsByTagName("td")
59
+ While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
66
- i = i + 1
60
+ DoEvents
67
- Worksheets("Sheet2").Cells(j, i).Value = obj3.innerText 'タグのテキスト内容をセルにセット
61
+ Wend
68
62
 
63
+ Set ieDoc = objIE.Document
64
+
65
+ For Each obj In objIE.Document.all '表示されているサイトの全タグ一つずつを変数objにセット
66
+ '各アンカータグ単位に以下の処理を実施
67
+ Select Case obj.tagName 'タグ名により処理を分岐
68
+ Case "TR", "TD", "TH" 'TR,TD,THタグの場合、以下の処理を実施
69
+
70
+ If obj.offsetParent.className = "boardFin yjSt marB6" Then '親タグのCLASS名が「boardFin yjSt marB6」の場合
71
+
72
+ Select Case obj.tagName 'タグ名により処理を分岐
73
+ Case "TR" 'TRタグの場合
74
+ j = j + 1 '行カウンターを1アップ
75
+ i = 0 '列カウンターをクリアー
76
+ Case "TD", "TH" 'TD,THタグの場合、以下を処理
77
+ i = i + 1 '列カウンターを1アップ
78
+
79
+ Worksheets("Sheet1").Cells(j, i).Value = obj.innerText 'タグのテキスト内容をセルにセット
80
+
69
- Next
81
+ End Select
82
+
83
+ End If
84
+
70
- Next
85
+ End Select
86
+
71
87
  Next
72
-
88
+
73
89
  End Sub
74
90
 
91
+
75
92
  ```
76
93
 
77
94
 
78
95
  ### 補足情報(FW/ツールのバージョンなど)
79
96
 
97
+ 2019/10/3/23:20 th取得のため 修正いたしました。
98
+
80
99
  2019/10/3/21:15 修正いたしました。
81
100
  現在の状況:ステップ インでは取得したい値が取得てきております。
82
101
 

4

文法の修正

2019/10/03 14:23

投稿

wing283
wing283

スコア123

title CHANGED
File without changes
body CHANGED
@@ -12,6 +12,7 @@
12
12
 
13
13
  ### 該当のソースコード
14
14
 
15
+ ```ここに言語を入力
15
16
  '変数を必ず定義すると宣言
16
17
  Option Explicit
17
18
 
@@ -44,11 +45,12 @@
44
45
  Dim htmlDoc As HTMLDocument
45
46
  Set htmlDoc = objIE.Document
46
47
 
48
+ With htmlDoc
47
- htmlDoc.getElementById("login").Value = "XXXXXXXXXX" 'ユーザー名を指定
49
+ .getElementById("login").Value = "XXXXXXXXXX" 'ユーザー名を指定
48
- htmlDoc.getElementById("pass").Value = "AAAAAAAAAA" 'パスワードを指定
50
+ .getElementById("pass").Value = "AAAAAAAAAA" 'パスワードを指定
49
- htmlDoc.getElementById("submit").Click
51
+ .getElementById("submit").Click
52
+ End With
50
53
 
51
-
52
54
  Do While objIE.Busy = True Or objIE.readyState <> 4
53
55
  DoEvents
54
56
  Loop
@@ -70,6 +72,7 @@
70
72
 
71
73
  End Sub
72
74
 
75
+ ```
73
76
 
74
77
 
75
78
  ### 補足情報(FW/ツールのバージョンなど)

3

補足の追記

2019/10/03 12:23

投稿

wing283
wing283

スコア123

title CHANGED
File without changes
body CHANGED
@@ -74,4 +74,7 @@
74
74
 
75
75
  ### 補足情報(FW/ツールのバージョンなど)
76
76
 
77
+ 2019/10/3/21:15 修正いたしました。
78
+ 現在の状況:ステップ インでは取得したい値が取得てきております。
79
+
77
80
  当方Excel2013を使用しています。

2

文法の修正

2019/10/03 12:20

投稿

wing283
wing283

スコア123

title CHANGED
File without changes
body CHANGED
@@ -30,60 +30,48 @@
30
30
  j = 0 '変数を初期化
31
31
 
32
32
  'Internet Exploreを立ち上げる
33
+ Dim objIE As Object 'IEオブジェクト参照用
33
34
  Set objIE = CreateObject("InternetExplorer.Application")
34
35
  objIE.Visible = True
35
-
36
- 'URLを指定する
37
- objIE.Navigate2 "http://hogeho.ge/login.php"
36
+ objIE.Navigate "http://hogeho.ge/login.php"
38
37
 
39
38
  '該当のWebサイトが表示されるのを待つ
40
39
  While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
41
40
  DoEvents
42
41
  Wend
43
-
44
- Set ieDoc = objIE.document
42
+
43
+
45
44
  Dim htmlDoc As HTMLDocument
46
- Set htmlDoc = objIE.document
45
+ Set htmlDoc = objIE.Document
47
-
46
+
48
- htmlDoc.getElementById("user_login").Value = "XXXXXXXXXX" 'ユーザー名を指定
47
+ htmlDoc.getElementById("login").Value = "XXXXXXXXXX" 'ユーザー名を指定
49
- htmlDoc.getElementById("user_pass").Value = "AAAAAAAAAA" 'パスワードを指定
48
+ htmlDoc.getElementById("pass").Value = "AAAAAAAAAA" 'パスワードを指定
50
- htmlDoc.getElementById("wp-submit").Click
49
+ htmlDoc.getElementById("submit").Click
51
-
52
- Set htmlDoc = Nothing 'ログインページのHTMLをいったん破棄
53
50
 
51
+
52
+ Do While objIE.Busy = True Or objIE.readyState <> 4
53
+ DoEvents
54
+ Loop
55
+
54
- Call WaitIE(objIE) '画面遷移待機
56
+ Set ieDoc = objIE.Document 'ログイン後ページのHTMLを読み込む
57
+
55
58
 
56
- 'ログイン後のページのHTMLを読み込む
57
- Set htmlDoc = objIE.document
58
-
59
- 'tableタグを一つずつを変数objにセット
60
- For Each obj In ieDoc.getElementsByTagName("table")
59
+ For Each obj In ieDoc.getElementsByTagName("table") 'tableタグを一つずつを変数objにセット
61
-
62
- 'trタグを一つずつを変数objにセット
63
- For Each obj2 In obj.getElementsByTagName("tr")
60
+ For Each obj2 In obj.getElementsByTagName("tr") 'trタグを一つずつを変数objにセット
64
-
65
- '行カウンターを1アップ
61
+ j = j + 1 '行カウンターを1アップ
66
- j = j + 1
67
62
  i = 0
68
63
  For Each obj3 In obj2.getElementsByTagName("td")
69
-
70
64
  i = i + 1
71
- 'タグのテキスト内容をセルにセット
72
- Worksheets("Sheet1").Cells(j, i).Value = obj3.innerText
65
+ Worksheets("Sheet2").Cells(j, i).Value = obj3.innerText 'タグのテキスト内容をセルにセット
73
66
 
74
67
  Next
75
68
  Next
76
69
  Next
77
-
78
-
70
+
79
71
  End Sub
80
- Function WaitIE(ByRef objIE As Object)
81
- Do While objIE.Busy = True Or objIE.readyState <> 4
82
- DoEvents
83
- Loop
84
- End Function
85
72
 
86
73
 
74
+
87
75
  ### 補足情報(FW/ツールのバージョンなど)
88
76
 
89
77
  当方Excel2013を使用しています。

1

文法の修正

2019/10/03 12:13

投稿

wing283
wing283

スコア123

title CHANGED
@@ -1,1 +1,1 @@
1
- ExcelVBAを使って管理画面ログイン後Tableをシートに出力
1
+ ExcelVBAを使って管理画面ログイン後Tableをシートに出力したい
body CHANGED
File without changes