VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。
正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。
タグごと抽出する方法でも構わないので教えてください。
例えば
<a href="www.yahoo.com△">○○○</a> ・・・<1>
※△は(www.yahoo.com)+(半角数字1文字)
※○○○は1文字以上の全角文字
このようなパターンの文字列(<1>を丸ごと)を抜き出すには
どのような正規表現を書けばよいでしょうか?
単に<a href ではじまって </a> で終わる文字列であれば
<a href.*</a>
で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので
ぜひ実現させたいと思っています。宜しくお願いします。
No.2ベストアンサー
- 回答日時:
正規表現による抽出にこだわらないでしたら、
>例えば
の答えは、[Links プロパティ] により、 下記のような方法で
>タグごと抽出する
こともできますし、
>もう少し範囲を絞れば目的の文字列だけを抽出
することもできます。
Sub test()
Dim objIE As Object
Dim i As Long
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.navigate "http://www.yahoo.com/"
While .Busy Or .ReadyState <> 4: DoEvents: Wend
With .Document
For i = 0 To .Links.Length - 1
Cells(i + 1, 1) = .Links(i).outerHTML
Cells(i + 1, 2) = .Links(i).outerText
Next
End With
End With
objIE.Quit
Set objIE = Nothing
End Sub
回答ありがとうございます。
抜き出せればよいので正規表現でなくてもOKです。
別の角度からの回答で大変参考になりました。
正規表現はおろかVBAも初心者ですので学ぶことが多いです。
No.1
- 回答日時:
Sub try()
Dim myReg As Object
Dim st As String
Dim match As Object
Dim matches As Object
Set myReg = CreateObject("VBScript.Regexp")
myReg.Pattern = "<[^<]+</\w+>"
myReg.Global = True
st = "<a href=""△△△"">●●●</a> <div ~=""△△△"">□□□</div>"
Set match = myReg.Execute(st)
myReg.Pattern = ">(.+)<"
For Each matches In match
MsgBox matches.Value & vbCrLf & myReg.Execute(matches.Value)(0).Submatches(0)
Next
Set myReg = Nothing
Set match = Nothing
End Sub
参考にはならなかったのかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAでフォルダ内のhtmlファイルを読み込みたい
その他(プログラミング・Web制作)
-
ExcelのVBAでHTMLのソースのタグの部分を小文字で取得したい
Access(アクセス)
-
VBAでhtmlソースから特定の文字列を抜き出す
Visual Basic(VBA)
-
-
4
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
テキストをhtml変換するには
Access(アクセス)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
vb2005でhtmlからテキストのみを抽出したい
Visual Basic(VBA)
-
9
エクセルVBAにてURLの抽出
Visual Basic(VBA)
-
10
エクセルVBA WEBからデータ取得 文字化け
Visual Basic(VBA)
-
11
htmlファイルのソースをエクセルの1セルへ取り込むマクロを教えてください
Visual Basic(VBA)
-
12
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
13
WebサイトのHTMLオブジェクトの取得がページの一部しかできません
SSL・HTTPS
-
14
WebサイトでHTMLのフォームに隠れた要素(Id)をプログラムで取得する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで変数から1行目だけを取得...
-
preg_matchでエラーが出ます。
-
preg_matchで Warning: Undefin...
-
正規表現パターンの記入方法に...
-
PHPで あるフォルダ内の、特定...
-
VBAを使ってHTMLソースから特定...
-
入力フォームの文字規制
-
正規表現で特定のHTMLタグのク...
-
PHPで<a>タグ内からURLと文字を...
-
文字列中の任意の数字を換算
-
eval
-
配列にある文字と文字列との一...
-
、"(ダブルクォーテーション)...
-
URLを抽出する正規表現
-
マルチバイトの文字列の検索方法
-
preg_match : マッチした位置の...
-
日本語の文字列のみをURLエンコ...
-
カンマ区切りの金額を検索する...
-
htmlソースからタグ内のテキス...
-
PHP preg_matchでUnknown modif...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
preg_matchでエラーが出ます。
-
VBAを使ってHTMLソースから特定...
-
Excelで数字のみを2倍3倍にする...
-
PHPで変数から1行目だけを取得...
-
正規表現でシングルクォーテー...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
住所から特定の文字列、数値を...
-
PHPで あるフォルダ内の、特定...
-
phpでhtmlソースを解析し、文字...
-
PHPで<a>タグ内からURLと文字を...
-
正規表現で特定のHTMLタグのク...
-
PHPの正規表現で住所を分けるに...
-
Smartyを使用した、テンプレー...
-
PHPによるIPアドレスマッチ
-
正規表現で、半角大文字と半角...
-
php 正規表現で(ただし○○は除...
-
PHPメールフォーム URLと半角...
-
「半角数字」と「+」を許可する...
-
preg_matchでのマッチが正しく...
おすすめ情報