こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelのVBAでHTMLのソースのタグの部分を小文字で取得したい

HTMLのソースコードを取得する下記のVBAを実行すると
タグの部分が大文字(<H1>等)になってしまいます。
どうすれば小文字のタグのまま取得することが出来るのでしょうか?

使用OS:Windows XP
使用ソフト:Microsoft Excel 2003
ご存知の方がおられましたらご回答をよろしくお願いします。

Sub sample()
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
MsgBox HTML
IE.Quit
End Sub

投稿日時 - 2009-04-29 23:29:17

QNo.4919500

すぐに回答ほしいです

質問者が選んだベストアンサー

パターンに自身はないですが・・・

Sub sample_2()
Dim RegExp As Object
Dim Match As Variant

Set RegExp = CreateObject("VBScript.Regexp")
RegExp.Pattern = "<\/?[A-Z]+([ 0-9]|>){1}"
RegExp.Global = True

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
MsgBox HTML

For Each Match In RegExp.Execute(HTML)
HTML = Replace(HTML, Match.Value, StrConv(Match.Value, vbLowerCase))
Next

MsgBox HTML
IE.Quit
End Sub

こうゆう感じの事でしょうか?

投稿日時 - 2009-04-30 03:33:24

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こんにちは。

>どうすれば小文字のタグのまま取得することが出来るのでしょうか?
#1さんのおっしゃるとおり必要ないです。HTMLコードは、タグで挟まれているだけでよいわけで、タグの中の大文字小文字は、関係ないと思います。IE から、ソースを取ればよいのでは?

あえて、VBAが分からないのなら、Wordやテキストエディタで置換すればよいと思います。それに、本では読んだことがあるのですが、ソースの二次的利用ではありませんか?

もう、回答は出てしまっているけれども、そういう質問というのは、きちんとした理由が必要ではないでしょうか?

投稿日時 - 2009-04-30 10:00:28

ANo.2

タグといえば < > で囲まれているのがルール。
というわけで< >で抜き出してそれぞれに小文字変換を加えてみるのはどうでしょうか。
ファイルの読み込みとかしたことないので詳しくないのですが、
変数 HTML はstring型でしょうか?

HTMLを取得した後、以下のコードを挿入してみるとどうでしょう。
変数宣言は省略。
--------------------------------
tag_start = 0
tag_end = 0
For i = 1 To Len(HTML)
moji = Mid(HTML, i, 1)
If moji = "<" Then
tag_start = i
ElseIf moji = ">" Then
tag_end = i
HTML = Left(HTML, tag_start - 1) & StrConv(Mid(HTML, tag_start, tag_end - tag_start + 1), vbLowerCase) & Right(HTML, Len(HTML) - tag_end)
tag_start = 0
tag_end = 0
End If
Next i
--------------------------------
文字列から < > を見つけて抜き出して、小文字に変換したものを、
タグ前後の文字と再度くっつけて変換してるように見せます。
これを < > の個数分繰り返します。

投稿日時 - 2009-04-30 02:24:19

ANo.1

http://www.nishishi.com/blog/2006/01/capital_or_smal.html
大文字でも小文字でも良いルール。
従ってどちらもありえる。
大文字なら小文字に変えれば済むことではないですか。なぜこんな質問が出るのか。
Sub test01()
a = "HTML"
b = StrConv(a, vbLowerCase)
MsgBox b
End Sub
参考
http://officetanaka.net/excel/vba/function/StrConv.htm

投稿日時 - 2009-04-30 00:27:44

補足

StrConvを使用すると例えば<H1>sampleTEXT</H1>の場合
<h1>sampletext</h1>となってしまいます。

あくまで小文字に変えたいのはタグだけです。

投稿日時 - 2009-04-30 00:55:55

あなたにオススメの質問