- ベストアンサー
ExcelのVBAの正規表現で二重引用符を含む文字列を検索できるようにしたい
二重引用符を含む文字列を検索できるようにするには 下記の記述の 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
- みんなの回答 (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 です。
その他の回答 (1)
- nayuta_lot
- ベストアンサー率64% (133/205)
こんにちは re.Pattern = """<hr class=\""" & "separate\" & """>""" でどうでしょうか? "~"を文字列として代入する場合 """~"""でできると思います。 ただ、今回の場合、"が間にもあって、最初と最後だけでは 途中の"で構文エラーになりますので、3つに分けて&でつないで みました。 一応、マクロで検証した結果、検索できたので大丈夫だと思いますが 以上、ご参考まで
お礼
やってみたところ自分の環境では検索できませんでした。 いろいろ試したところ re.Pattern = "<hr class=separate>"とすると うまく検索できるようです。(HTML取得時にタグの中の「"」を取り除いて取得するため?) ご回答いただきどうもありがとうございました。
お礼
エスケープは\"ではなく""なのですね。 ご回答いただきどうもありがとうございました。