
こんにちは。
VBAの記述方法についてご質問です。
ご教示のほどよろしくお願いいたします。
◆やりたいこと
指定したURL(1000ページほどあります)にアクセスし、htmlソース内にちらばっている”スキー場名”を抽出しエクセルに値を返すVBAを記述したいです。
※スキー場名が記述されているタグはページごとに不規則なことが難点です。
◆やりたいことイメージ
画像内に記載しているURL
http://meito.knt.co.jp/detail.aspx?&crsno=1042176
http://meito.knt.co.jp/detail.aspx?&crsno=1061740
http://meito.knt.co.jp/detail.aspx?&crsno=1059072

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
一応、ご質問者さんの反応をお待ちしましたが、反応がないので、現在のものをそのままで掲示します。
'//
Dim ret As String
Sub Main()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value Like "http:*" Then
Call DestGet(Cells(i, 1).Value)
End If
If ret <> "" Then
Cells(i, 2).Value = ret
End If
Next i
End Sub
Sub DestGet(strURL As String)
Dim objHTTP As Object
Dim httpLog As String
ret = ""
On Error GoTo ErrHandler
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 'New winHttp.WinHttpRequest '
objHTTP.Open "GET", strURL, False
objHTTP.Send
If objHTTP.Status = 200 Then
httpLog = objHTTP.ResponseText
ret = Analysislogs(httpLog)
Else
ret = " err"
End If
Exit Sub
ErrHandler:
End Sub
Function Analysislogs(httpLog As String)
Dim arLog As Variant
Dim oHtml As HTMLDocument
Dim buf As Variant
Dim tp, tpe, ct, ctt
Dim i As Long
Dim ar As Variant
Dim dst As String
Dim oRegExp As regExp
Set oHtml = CreateObject("HTMLfile")
oHtml.body.innerHTML = httpLog
Set ct = oHtml.getElementById("content980")
ctt = ct.innerText
buf = ""
Set oRegExp = New regExp
Dim Matches
Dim Match
Dim arPat As Variant
arPat = Array("[/「]([ぁ-んァ-ヶ・。!-~一-龠]+スキー場)」", "([ぁ-んァ-ヶ・。!-~一-龠]+スキー場)")
For i = 0 To UBound(arPat)
With oRegExp
.Pattern = arPat(i)
.Global = True
Set Matches = .Execute(ctt)
For Each Match In Matches
If InStr(1, Match.SubMatches(0), buf, 1) > 1 Or buf = "" Then
buf = Trim(buf) & "," & Match.SubMatches(0)
End If
Next
End With
If buf <> "" Then
Exit For
End If
Next i
If buf <> "" Then
Analysislogs = Mid$(buf, 2)
End If
End Function
'///
No.2
- 回答日時:
こんばんは。
#1さん曰く
>スキー場の名前が決まった位置に出るわけではないので曖昧過ぎて拾えないでしょう。
そうなんですね、一応は、こちらは試してみて成功はしているものの、数多くやってみないとはっきりしたことは言えません。もうちょっと、いろんなバラエティのあるリストがほしいですね。
要するに、文字を拾うための様々なパターンを見極めないと無理かなって思うのです。今のところ、2パターンを用意しました。主に何を気にしているかというと、見落としがないか、文字列の中に入る記号にちょっと不安があるのです。
その見極めがつかないと、何度もやり直しになりそうで、ちょっと公開できません。それと、後々、あれがこうとか、これがこうしてほしいとか言われるのは、数が多そうなので、ちょっと辛いものがありますね。もし、ダメな時に、以前、延々とリクエストされたことがあり、とても懲りましたので、そこはご容赦願いたいものなのですが……。
とりあえず、添付画像をご覧ください。

No.1
- 回答日時:
スキー場の名前が決まった位置に出るわけではないので曖昧過ぎて拾えないでしょう。
国内のスキー場って4~500カ所あるんですかね、その一覧を用意して1つのシートにまとめておき、
ページ内に「スキー」の単語があったらその前5~6文字を拾いだし、
スキー場名一覧(シート)と部分比較してスキー場名を確定してはどうでしょうか。
具体的な手順としては、
● Excel VBA の[ツール]-[参照設定]で、Microsoft Internet Control を参照設定しておく。
● A列のURLを取得。
● URL指定したIEオブジェクトからHTMLソースを取得。
● HTMLソース内を検索して「スキー」の単語があったらその前5~6文字を拾い出す。
● 拾い出した語句とスキー場名一覧を比較して部分一致したものをスキー場名として取得。
● 一致しない場合は再びそれ以降のソースから「スキー」の単語を検索。
● B列に該当したスキー場名を記述。
● 改行してまたA列のURLを取得。以降URLが無くなるまで繰り返し。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- Excel(エクセル) エクセルVBA 特殊フォルダのパスを取得の方法を教えてください 3 2022/09/02 13:14
- Visual Basic(VBA) 複数指定セルの可視セルのみを別シートに転記するVBAについて 2 2022/05/27 21:19
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) VBA言語プログラミング 1 2022/11/19 17:16
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLメールを送りたい
-
HPで本日の日付を表示したいで...
-
レストラン、英語のメニュー表記
-
webbrowserでのjavascriptを含...
-
どこに質問を出していいか困っ...
-
ブラウザのソース表示と著作権...
-
ARPツール
-
swfが表示されない。
-
Dreamweaverのコードカラーが黒...
-
Htmlメールの送信
-
ソースの追加行数と変更行数
-
C言語上級者になるための学習方...
-
実行オブジェクトからソースを...
-
Htmlをieの「Excelで編集」で編...
-
ホームページのタイトルが文字...
-
googleアドセンスの検索ボック...
-
タグの閉じ忘れチェック
-
VBAでWEB上のデータを変数に代...
-
フレームの背景を透過したいん...
-
IEの右クリックメニューに「エ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ソースの追加行数と変更行数
-
VBAで#Regionに変わるものは無...
-
レストラン、英語のメニュー表記
-
#ifdef多用でソースが見づらい
-
ListBoxの最大表示項目数について
-
ホームページリンク共有時に指...
-
Dreamweaverのコードカラーが黒...
-
プログラム時のヘッダコメント...
-
c言語の改修されたソースから改...
-
コメントが閉じてないというエ...
-
Visual Source Safe?
-
実行オブジェクトからソースを...
-
VisualStudio2010でデバッグソ...
-
【VC++6.0(MFC)】Access Violat...
-
文字化けについて
-
htmlのタブの色変更について
-
Doxygenでの更新履歴(@history...
-
C/C++ をHTML変換するツールを...
-
JSPの実行結果をHTMLに変換
-
マウスポインタが手の形になら...
おすすめ情報