質問編集履歴

5

修正

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

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

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

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

エラー内容追加

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

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

不備修正

2018/12/25 05:51

投稿

cafeore_nmti
cafeore_nmti

スコア28

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

追記、質問内容変更

2018/12/25 05:50

投稿

cafeore_nmti
cafeore_nmti

スコア28

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
- ```html
5
+ 追記:
6
6
 
7
- <h2 id="01"></h2>
7
+ >>mts10806様
8
8
 
9
- <table class="tableLine">
9
+ 取得するサイトは他者様のサイトになります。もちろん許可はとってあります。
10
10
 
11
- <tbody>
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
- <td colspan="3"></td>
13
+ 以前一度参考にさせていただいたサイトでしたが、もう一度一通り見てきました。
42
-
43
- </tr>
44
-
45
- </tbody>
46
-
47
- </table>
48
14
 
49
15
 
50
16
 
51
- <h3></h3>
17
+ ・1つのページ内に複数のテーブルがある。
52
18
 
53
- <table class="tableLine">
19
+ tableにはid属性は無し
54
20
 
55
- <tbody>
21
+ ・ページによってあるテーブルないテーブルがある。
56
22
 
57
- <tr>
58
23
 
59
- <th></th>
60
24
 
61
- <td></td>
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
- </tr>
29
+ ```vba
68
30
 
69
- <tr>
31
+ Dim colTable As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
70
32
 
71
- <th></th>
33
+ Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet
72
34
 
73
- <td></td>
74
35
 
75
- <th></th>
76
36
 
77
- <td></td>
37
+ Dim el As IHTMLElement
78
38
 
79
- </tr>
39
+ For Each el In colTable.Item(1)
80
40
 
81
- <tr>
41
+ Set colTr = el.getElementsByTagName("tr")
82
42
 
83
- <th></th>
43
+ Debug.Print colTr(0).innerText
84
44
 
85
- <td colspan="3"></td>
86
-
87
- </tr>
45
+ Next el
88
-
89
- </tbody>
90
-
91
- </table>
92
46
 
93
47
  ```