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

質問編集履歴

5

修正

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  エラー内容は、「実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」です。
15
15
 
16
16
  追記2:
17
- 落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入っていことになりますよね。
17
+ 落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入っていことになりますよね。
18
18
  ということは、(1)などと指定しなくてもよく、後はそれぞれのtableに対しての処理を書いていけばよさそうですね。
19
19
 
20
20
  ```vba

4

追記2

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,10 @@
13
13
  以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
14
14
  エラー内容は、「実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」です。
15
15
 
16
+ 追記2:
17
+ 落ち着いて考えてみたら、下記コードの場合、「el」には一つずつtable要素が入っていることになりますよね。
18
+ ということは、(1)などと指定しなくてもよく、後はそれぞれのtableに対しての処理を書いていけばよさそうですね。
19
+
16
20
  ```vba
17
21
  Dim colTable, colTr As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
18
22
  Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet

3

エラー内容追加

2018/12/25 06:03

投稿

cafeore_nmti
cafeore_nmti

スコア28

title CHANGED
File without changes
body CHANGED
@@ -11,6 +11,7 @@
11
11
  ・ページによってあるテーブルないテーブルがある。
12
12
 
13
13
  以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
14
+ エラー内容は、「実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません。」です。
14
15
 
15
16
  ```vba
16
17
  Dim colTable, colTr As IHTMLElementCollection 'IHTMLエレメントコレクションを準備

2

不備修正

2018/12/25 05:51

投稿

cafeore_nmti
cafeore_nmti

スコア28

title CHANGED
File without changes
body CHANGED
@@ -13,7 +13,7 @@
13
13
  以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
14
14
 
15
15
  ```vba
16
- Dim colTable As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
16
+ Dim colTable, colTr As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
17
17
  Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet
18
18
 
19
19
  Dim el As IHTMLElement

1

追記、質問内容変更

2018/12/25 05:50

投稿

cafeore_nmti
cafeore_nmti

スコア28

title CHANGED
File without changes
body CHANGED
@@ -1,47 +1,24 @@
1
- excel vbaで、数百のページから自動でtableを取得してセルに値を入れるプログラムを作成しようとしているのですが、どのようにすればよいか思い浮かびません。ページ内に複数のテーブルがあり、その中で不要なテーブルもあります。下記、その一部ですが下のようなテーブルを取得したいときはどのようにしますか?
1
+ excel vbaで、数百のページから自動でtableを取得してセルに値を入れるプログラムを作成しようとしているのですが、どのようにすればよいか思い浮かびません。
2
2
 
3
- ```html
3
+ 追記:
4
- <h2 id="01"></h2>
5
- <table class="tableLine">
6
- <tbody>
7
- <tr>
8
- <th></th>
9
- <td></td>
10
- <th></th>
11
- <td></td>
12
- </tr>
13
- <tr>
14
- <th></th>
15
- <td></td>
16
- <th></th>
17
- <td></td>
18
- </tr>
19
- <tr>
20
- <th></th>
21
- <td colspan="3"></td>
22
- </tr>
23
- </tbody>
4
+ >>mts10806様
5
+ 取得するサイトは他者様のサイトになります。もちろん許可はとってあります。
24
- </table>
6
+ >>TanakaHiroaki
7
+ 以前一度参考にさせていただいたサイトでしたが、もう一度一通り見てきました。
25
8
 
26
- <h3></h3>
27
- <table class="tableLine">
28
- <tbody>
29
- <tr>
30
- <th></th>
31
- <td></td>
32
- <th></th>
33
- <td></td>
34
- </tr>
35
- <tr>
36
- <th></th>
37
- <td></td>
38
- <th></th>
39
- <td></td>
40
- </tr>
41
- <tr>
42
- <th></th>
43
- <td colspan="3"></td>
44
- </tr>
45
- </tbody>
46
- </table>
9
+ ・1つのページ内に複数のテーブルがある。
10
+ tableにはid属性は無し
11
+ ・ページによってあるテーブルないテーブルがある。
12
+
13
+ 以上の条件で(条件は現段階ではあまり関係ないですが)、まずは2つ目のテーブルを取得して一つ目のtrの値を表示してみようとしたのですが、「For Each el In colTable.Item(1)」の部分でエラーがでます。itemを省略して、「「For Each el In colTable(1)」」でもダメでした。colTableの中に全てのテーブルが入っており、itemで指定できそうだったので公式サイトを参考に記述してみたのですが、構文がおかしいでしょうか?
14
+
15
+ ```vba
16
+ Dim colTable As IHTMLElementCollection 'IHTMLエレメントコレクションを準備
17
+ Set colTable = htmlDoc.getElementsByTagName("table") 'HTMLドキュメント内のtable要素をコレクションとしてGet
18
+
19
+ Dim el As IHTMLElement
20
+ For Each el In colTable.Item(1)
21
+ Set colTr = el.getElementsByTagName("tr")
22
+ Debug.Print colTr(0).innerText
23
+ Next el
47
24
  ```