質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Q&A

解決済

1回答

1832閲覧

VBA タグの中からCLASS名を取得する(IE使用)

masa1111

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

0グッド

0クリップ

投稿2021/06/12 12:42

VBAの初歩的な質問ですが、どなたか教えていただきたく。
本来ならタグの中(hmtlタグやdivタグ)の中のclassをIEから取得したいのですが、
うまく取得できません。以下の様に書きました。

例えばdivタグの中のclassを取得してクラス名が以下なら
c-contentsSpecificationsInnerRightList_check
1をそれ以外なら0にしたいです。方法をどなたか教えていただきたく。お願いします。

For Each dl_i In mainListArea3.getElementsByclassName("c-contentsSpecificationsInnerRightList_check")

If dl_i.getAttribute("className") = "c-contentsSpecificationsInnerRightList_check" Then
outputSheet.Cells(writerow, 12).Value = 1
Else
outputSheet.Cells(writerow, 12).Value = 0
End If

writerow = writerow + 1

Next dl_i

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/12 12:53

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14244520149?__ysp=Yy1jb250ZW50c1NwZWNpZmljYXRpb25zSW5uZXJSaWdodExpc3RfY2hlY2s%3D https://teratail.com/help#posted-otherservice >teratailでは、マルチポスト※の推奨はしていません。 やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。 また、teratail上で誤って同じ質問を複数投稿してしまった場合は、質問の削除リクエストを送ってください。 ※「マルチポスト」とは、同じ内容の文章を複数のQ&Aサイトや掲示板などへ投稿することです。 以上、ご対応ください。
masa1111

2021/06/12 13:59

YAHOOサイトを取り消しました。
guest

回答1

0

ベストアンサー

getElementsByclassName("c-contentsSpecificationsInnerRightList_check") はクラス名が"c-contentsSpecificationsInnerRightList_check" の要素を取得します。
If dl_i.getAttribute("class") = "c-contentsSpecificationsInnerRightList_check" Thenとクラス名をチェックしても常にTrueになります。

HTMLが提示されていない上にコードも一部の抜粋ですので、的確な回答は難しいですが、
mainListArea3内のdivタグをすべて調べて、クラス名が"c-contentsSpecificationsInnerRightList_check"なら1,そうでないなら0をセルに出力していくということなら、

vba

1For Each dl_i In mainListArea3.GetElementsByTagName("div") 2 3 If dl_i.getAttribute("className") = "c-contentsSpecificationsInnerRightList_check" Then 4 outputSheet.Cells(writerow, 12).Value = 1 5 Else 6 outputSheet.Cells(writerow, 12).Value = 0 7 End If 8 9 writerow = writerow + 1 10 11Next dl_i

投稿2021/06/13 01:27

編集2021/06/13 16:13
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masa1111

2021/06/13 11:28

ありがとうございます。ただこちらの質問の仕方が悪かったかもしれません。 For Each dl_i In mainListArea3.getElementsByclassName("c-contentsSpecificationsInnerRightList_check") 上記部分のfor文は変更したくなく、 if文以降で、divタグの中のclass名(c-contentsSpecificationsInnerRightList_check)があるか否かを 書きたいと思っておりました。その際の書き方がわからず、教えていただきたく。 以上、よろしくお願いいたします。
hatena19

2021/06/13 16:20

If dl_i.getAttribute("class") = "c-contentsSpecificationsInnerRightList_check" Then か If dl_i.className = "c-contentsSpecificationsInnerRightList_check" Then でどうでしょう。 ただし、回答に書きましたが、かならずTrueになりますけど。
masa1111

2021/06/13 22:34

回答ありがとうございます。こちらでdivタグの中のclass名を取得することになっているのでしょうか? 確かに自分のPRGで実施しても全てTRUEになってしまします。。 <ただし、回答に書きましたが、かならずTrueになりますけど。 こちらどういう意味でございますか? 以上、よろしくお願いいたします。
hatena19

2021/06/13 23:58

各コードの意味を理解すれば分かることです。 getElementsByclassName(クラス名) は指定したクラス名を持つ要素のコレクション(複数の要素の集合)を取得します。 For Each dl_i In コレクション はコレクションから一つの要素の順に取り出します。 その取り出した要素は指定したクラス名を持っています。 よって dl_i = "クラス名" は常にTrueになります。 「divタグの中のclass名を取得すること」ということがしたいのなら、上の回答のコードになります。
masa1111

2021/06/14 02:25

そうなんですね。ありがとうございます。。!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問