質問編集履歴
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
追記2:
|
32
32
|
|
33
|
-
落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入ってい
|
33
|
+
落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入っていくことになりますよね。
|
34
34
|
|
35
35
|
ということは、(1)などと指定しなくてもよく、後はそれぞれのtableに対しての処理を書いていけばよさそうですね。
|
36
36
|
|
4
追記2
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,6 +28,14 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
+
追記2:
|
32
|
+
|
33
|
+
落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入っていることになりますよね。
|
34
|
+
|
35
|
+
ということは、(1)などと指定しなくてもよく、後はそれぞれのtableに対しての処理を書いていけばよさそうですね。
|
36
|
+
|
37
|
+
|
38
|
+
|
31
39
|
```vba
|
32
40
|
|
33
41
|
Dim colTable, colTr As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
|
3
エラー内容追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
|
26
26
|
|
27
|
+
エラー内容は、「実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」です。
|
28
|
+
|
27
29
|
|
28
30
|
|
29
31
|
```vba
|
2
不備修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
```vba
|
30
30
|
|
31
|
-
Dim colTable As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
|
31
|
+
Dim colTable, colTr As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
|
32
32
|
|
33
33
|
Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet
|
34
34
|
|
1
追記、質問内容変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,93 +1,47 @@
|
|
1
|
-
excel vbaで、数百のページから自動でtableを取得してセルに値を入れるプログラムを作成しようとしているのですが、どのようにすればよいか思い浮かびません。
|
1
|
+
excel vbaで、数百のページから自動でtableを取得してセルに値を入れるプログラムを作成しようとしているのですが、どのようにすればよいか思い浮かびません。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
追記:
|
6
6
|
|
7
|
-
|
7
|
+
>>mts10806様
|
8
8
|
|
9
|
-
|
9
|
+
取得するサイトは他者様のサイトになります。もちろん許可はとってあります。
|
10
10
|
|
11
|
-
|
11
|
+
>>TanakaHiroaki
|
12
12
|
|
13
|
-
<tr>
|
14
|
-
|
15
|
-
<th></th>
|
16
|
-
|
17
|
-
<td></td>
|
18
|
-
|
19
|
-
<th></th>
|
20
|
-
|
21
|
-
<td></td>
|
22
|
-
|
23
|
-
</tr>
|
24
|
-
|
25
|
-
<tr>
|
26
|
-
|
27
|
-
<th></th>
|
28
|
-
|
29
|
-
<td></td>
|
30
|
-
|
31
|
-
<th></th>
|
32
|
-
|
33
|
-
<td></td>
|
34
|
-
|
35
|
-
</tr>
|
36
|
-
|
37
|
-
<tr>
|
38
|
-
|
39
|
-
<th></th>
|
40
|
-
|
41
|
-
|
13
|
+
以前一度参考にさせていただいたサイトでしたが、もう一度一通り見てきました。
|
42
|
-
|
43
|
-
</tr>
|
44
|
-
|
45
|
-
</tbody>
|
46
|
-
|
47
|
-
</table>
|
48
14
|
|
49
15
|
|
50
16
|
|
51
|
-
|
17
|
+
・1つのページ内に複数のテーブルがある。
|
52
18
|
|
53
|
-
|
19
|
+
・tableにはid属性は無し
|
54
20
|
|
55
|
-
|
21
|
+
・ページによってあるテーブルないテーブルがある。
|
56
22
|
|
57
|
-
<tr>
|
58
23
|
|
59
|
-
<th></th>
|
60
24
|
|
61
|
-
|
25
|
+
以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
|
62
26
|
|
63
|
-
<th></th>
|
64
27
|
|
65
|
-
<td></td>
|
66
28
|
|
67
|
-
|
29
|
+
```vba
|
68
30
|
|
69
|
-
|
31
|
+
Dim colTable As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
|
70
32
|
|
71
|
-
|
33
|
+
Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet
|
72
34
|
|
73
|
-
<td></td>
|
74
35
|
|
75
|
-
<th></th>
|
76
36
|
|
77
|
-
|
37
|
+
Dim el As IHTMLElement
|
78
38
|
|
79
|
-
|
39
|
+
For Each el In colTable.Item(1)
|
80
40
|
|
81
|
-
|
41
|
+
Set colTr = el.getElementsByTagName("tr")
|
82
42
|
|
83
|
-
|
43
|
+
Debug.Print colTr(0).innerText
|
84
44
|
|
85
|
-
<td colspan="3"></td>
|
86
|
-
|
87
|
-
|
45
|
+
Next el
|
88
|
-
|
89
|
-
</tbody>
|
90
|
-
|
91
|
-
</table>
|
92
46
|
|
93
47
|
```
|