dポイントプレゼントキャンペーン実施中!

二重引用符を含む文字列を検索できるようにするには
下記の記述の re.Pattern = "<hr class=\"separate\">"
の部分をどのように直せばよいのでしょうか?

Sub tagCount()

Dim cnt As Integer
Dim IE As Object
Dim HTML As String

Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate ("http://www.yahoo.co.jp/")
While IE.busy: Wend
While IE.Document.readyState <> "complete": Wend
HTML = IE.Document.body.innerHTML
IE.Quit

Dim re As RegExp
Dim mc As MatchCollection
Dim m As Match

Set re = New RegExp
re.Pattern = "<hr class=\"separate\">"
re.Global = True
re.IgnoreCase = True
Set mc = re.Execute(HTML)
MsgBox mc.Count

End Sub

ご存知の方がおられましたらご回答をよろしくお願いします。

使用OS:Windows XP
使用ソフト:Microsoft Excel 2003

A 回答 (2件)

こんにちは。



とりあえずパッと見で、試してませんが、

  > re.Pattern = "<hr class=\"separate\">"
     ↓
   re.Pattern = "<hr class=""separate"">"

のように、ダブルクウォートをエスケープ(2重に)すれば良いの
ではないでしょうか。

また、単純に HR タグだけカウントしたい、つまり

  class="separate"

などの要素を問わないのであれば、正規表現を使わなくても、

  MsgBox IE.Document.getElementsByTagName("hr").Length

という簡易な手もあります。

あと、HR タグなら問題ないと思いますけど、タグ数をカウントしたい
のであれば、

  > HTML = IE.Document.body.innerHTML

では、<body>~</body> タグ内にあるソースだけがカウント対象となって
しまいますから、ヘッダー部 <head>~</head> も含めて全ソースを対象
にするなら、

   HTML = IE.Document.documentElement.outerHTML

です。
    • good
    • 0
この回答へのお礼

エスケープは\"ではなく""なのですね。
ご回答いただきどうもありがとうございました。

お礼日時:2008/07/12 18:32

こんにちは



re.Pattern = """<hr class=\""" & "separate\" & """>"""
でどうでしょうか?

"~"を文字列として代入する場合
"""~"""でできると思います。
ただ、今回の場合、"が間にもあって、最初と最後だけでは
途中の"で構文エラーになりますので、3つに分けて&でつないで
みました。

一応、マクロで検証した結果、検索できたので大丈夫だと思いますが
以上、ご参考まで
    • good
    • 1
この回答へのお礼

やってみたところ自分の環境では検索できませんでした。
いろいろ試したところ re.Pattern = "<hr class=separate>"とすると
うまく検索できるようです。(HTML取得時にタグの中の「"」を取り除いて取得するため?)

ご回答いただきどうもありがとうございました。

お礼日時:2008/07/12 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!