URLからタイトルを抽出するマクロについて教えて下さい。
忍者ブログの記事タイトルをURLから抽出しようとしたのですが
文字化けしてしまい全く分かりません。
他のサイトやブログだと普通に抽出出来るのですが・・・
文字コード?か何かだと思うのですが、原因が分かりません。
ちなみに以下のマクロは、ネット上で検索して見つけたものを
そのままコピーして使用しています。
-------------------------------
Public Sub ReadTitle()
Dim url As Range
Dim Http, buf As String
Set Http = CreateObject("MSXML2.XMLHTTP")
Set url = Range("A3")
Do While (url.Value <> "")
Http.Open "GET", url.Value, False
Http.Send
buf = StrConv(Http.ResponseBody, vbUnicode)
'msgbox buf
url.Offset(0, 1).Value = getTitle(buf)
Set url = url.Offset(1, 0)
Loop
Set Http = Nothing
End Sub
Private Function getTitle(buf As String) As String
Dim pos1 As Long, pos2 As Long
pos1 = InStr(1, buf, "<title>")
If pos1 = 0 Then
pos1 = InStr(1, buf, "<TITLE>")
If pos1 = 0 Then
getTitle = ""
Exit Function
Else
pos2 = InStr(pos1 + 7, buf, "</TITLE>")
End If
Else
pos2 = InStr(pos1 + 7, buf, "</title>")
End If
getTitle = Mid(buf, pos1 + 7, pos2 - pos1 - 7)
End Function
------------------------------
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
utf-8みたいなので
>buf = StrConv(Http.ResponseBody, vbUnicode)
を
With CreateObject("ADODB.Stream")
.Open
.Type = 2 'adTypeText
.Charset = "unicode"
.Writetext Http.ResponseBody
.Position = 0
.Charset = "utf-8"
buf = .ReadText()
.Close
End With
にしてみては?
No.3
- 回答日時:
参照設定をして、以下のコードを実行すると
指定した。URLで、IEが起動して、
URLのタイトルがエクセルのイミディエイトウィンドに出ます。
Dim ie As New InternetExplorer
Dim dc As HTMLDocument
ie.Navigate "http://oshiete1.goo.ne.jp/qa5617517.html"
ie.Visible = True
Do While ((ie.Busy = True) Or (ie.ReadyState <> READYSTATE_COMPLETE))
DoEvents
Loop
Set dc = ie.Document
Debug.Print dc.Title
Set ie = Nothing
******
実行結果
エクセルでURLからタイトルのみを抽出する方法 - 教えて!goo
********
文字コードは、検証していませんが。
ieで表示して、たぶん文字コードが
文字化けしていなければ
大丈夫なような気もしますが。
未検証です。
No.2
- 回答日時:
こんにちは。
>忍者ブログの記事タイトルをURLから抽出しようとしたのですが
こんな感じでいかがですか?
>buf = StrConv(Http.ResponseBody, vbUnicode)
ここがへんかもしれません。
以下は、必要でしたら、サブルーチン・プロシージャに分けてください。
'-------------------------------------------
Public Sub ReadTitleR()
Dim stRng As Range
Dim buf As String, ar As Variant
Dim i As Long
With CreateObject("MSXML2.XMLHTTP")
Set stRng = Range("A3")
For i = 1 To Cells(Rows.Count, stRng.Column).End(xlUp).Row
If StrConv(stRng.Cells(i, 1).Value, vbLowerCase) Like "http://??*" Then
.Open "GET", stRng.Cells(i, 1).Value, False
On Error Resume Next
.Send
On Error GoTo 0
buf = .ResponseText
If .Status >= 200 And .Status < 300 And buf <> "" Then
ar = Split(buf, "title>")
stRng.Cells(i, 2).Value = Mid(ar(1), 1, Len(ar(1)) - 2)
End If
End If
Next i
End With
End Sub
'-------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GoogleChromeでレイアウトが左...
-
doc As HTMLdocumentのコンパイ...
-
CSSやJavaScriptのバージョン指定
-
windowsOS上でsafariのバージョ...
-
tabキーによるfocusの当たり方...
-
webページの有効期限が切れてい...
-
プルダウン(リストボックス)の...
-
Macで見るとページが崩れます。
-
スマホでページ内リンクができない
-
HTML文書を上書き保存してもブ...
-
C++Builderでの開発
-
VBAでgetElementByTagName
-
テキストエリア内の改行禁止
-
XMLを作成してもタグしか表示さ...
-
プルダウンメニューの開く方向...
-
キーフレーム
-
H1タグに改行の<br>を使う
-
preタグがプロの現場であまり使...
-
AfterEffectsでイージーイーズ...
-
改行されたデータをIEに貼り付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GoogleChromeでレイアウトが左...
-
HTMLのバージョンの確認方法は?
-
Macで見るとページが崩れます。
-
WindowsとMacでのChromeのスタ...
-
<IMG>のALIGN属性値「absmiddle...
-
プルダウン(リストボックス)の...
-
エクセルのシートをブラウザに...
-
スマホでページ内リンクができない
-
doc As HTMLdocumentのコンパイ...
-
tabキーによるfocusの当たり方...
-
主要ポータルサイトの多くがス...
-
VBA オブジェクトが必要です
-
VBAでgetElementByTagName
-
起動済みのIEをハンドルから操...
-
HTML文書を上書き保存してもブ...
-
DOCTYPE宣言はしなくていいの?
-
Shift-JISでxml宣言するべき?
-
ブラウザのエンコード 自動選...
-
WEBページからのメッセージをVBAで
-
ブラウザ依存のレイアウト・・...
おすすめ情報