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(エクセル)
-
6
テキストをhtml変換するには
Access(アクセス)
-
7
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
8
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
9
エクセルVBAにてURLの抽出
Visual Basic(VBA)
-
10
エクセルVBA WEBからデータ取得 文字化け
Visual Basic(VBA)
-
11
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
12
Excel.VBA テキストファイルを指定行数からの読み込む
Excel(エクセル)
-
13
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
14
WebサイトのHTMLオブジェクトの取得がページの一部しかできません
SSL・HTTPS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
、"(ダブルクォーテーション)...
-
preg_matchでエラーが出ます。
-
VBAを使ってHTMLソースから特定...
-
電話番号のチェック ハイフン...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
改行を読み飛ばす
-
C++で空Enterの入力を判...
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
エクセルVBA 文字列領域が不足...
-
カンマの含まれる文字列の数値...
-
エクセルのCOUNTIFが正しくカウ...
-
数値をASCII文字にする方法につ...
-
ファイルの内容をstrcpyを使っ...
-
ラベル(スタティックテキスト)...
-
VBScriptである文字列に半角文...
-
半角記号、全角記号を含む正規...
-
VBSで"をエスケープする文字は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
、"(ダブルクォーテーション)...
-
VBAを使ってHTMLソースから特定...
-
PHPで変数から1行目だけを取得...
-
Excelで数字のみを2倍3倍にする...
-
preg_matchでエラーが出ます。
-
正規表現でシングルクォーテー...
-
URLを抽出する正規表現
-
正規表現パターンの記入方法に...
-
PHPで<a>タグ内からURLと文字を...
-
PHP 複数行の正規表現
-
PHPの正規表現で住所を分けるに...
-
電話番号のチェック ハイフン...
-
ereg_match関数について
-
正規表現で「0」のみ抽出
-
PHPメールフォーム URLと半角...
-
preg_matchで Warning: Undefin...
-
phpでメールアドレス入力の入力...
-
正規表現で特定のHTMLタグのク...
-
preg_matchで指定ファイルのタ...
-
変数に指定文字列が含まれると...
おすすめ情報