こんばんは。
しばらく、迷っていたので、返事を付けるのが遅くなってしまいました。
こんな風にしてみました。EUCのデータ・インポートがうまくいかないのは、私は、Excel側のバグだと思います。これは、MS側に連絡を取ったほうがよいかもしれませんね。(と言っても、2003なので、そのままなのかな?上の部分から取れば、このようなことはないのかもしれません。)
そこで、こんなマクロを作ってみました。ただ、Yahooは、時々、レイアウトを変えますので、その時は、また、このWebインポートのバグが直っているか、もしくは、マクロを直すかどちらかにしてください。マクロの直す部分は、URLが違っていれば、その部分と、Pattern という部分だけのはずです。その場合、ログソースをとらなくてはなりません。気になる書式は、そちらでお直しください。
一応、こちらではExcelのインポートは成功しております。
以下のマクロの注意点は、VBE の画面で、ツール-「参照設定」をしなければならないということです。
この二点にチェックを入れてください。
'参照設定 Microsoft Internet Control
'参照設定 Microsoft VBScript Regular Expressions 5.5
'標準モジュール
Sub YahooStockShareAccess()
'参照設定 Microsoft Internet Control
'参照設定 Microsoft VBScript Regular Expressions 5.5
Dim objIE As InternetExplorer
Dim Re As VBScript_RegExp_55.RegExp
Dim myContents As String
Dim myLog As String
Dim i As Long
Dim j As Long
Dim k As Long
Dim n As Integer
Dim m As Long
Dim Matches As MatchCollection
Dim Match As Match
Set Re = New RegExp
Set objIE = New InternetExplorer
Const URL As String = "http://quoterank.yahoo.co.jp/ranking/search?b=1&kd=21&mk=11%2c%2012%2c%2021%2c%2022%2c%2031%2c%2032%2c%2043%2c%2047%2c%2083%2c%2087%2c%2094%2c%2017%2c%20A1%2c%20A7%2c%2037&ca=3&tm=day&"
With objIE
'.Visible = True 'すでに開いているので、表示しない
.Navigate URL
Do While .Busy
DoEvents
Loop
Do Until .ReadyState = 4
DoEvents
Loop
myContents = .Document.body.innerHTML
i = InStr(myContents, String(82, "-"))
j = InStrRev(myContents, String(82, "-"))
myLog = Mid$(myContents, i + 83, j - i + 83)
.Quit 'ここで閉じる。
End With
Cells(1, 1).Resize(, 9).Value = Array("順位", "コード", "市場", "名称", "取引値", "", "単元株数", "25日移動平均", "かい離率")
Cells(2, 5).Resize(20).NumberFormatLocal = "M/D h:m"
m = 1 '初期値
Application.ScreenUpdating = False
With Re
.Pattern = "[^>]+>([^<]*)<"
.Global = True
Set Matches = .Execute(myLog)
For Each Match In Matches
Buf = .Replace(Match, "$1")
If Buf Like "['-龝]*" Then
Cells(m + 1, n + 1).Value = Buf
k = k + 1
n = k Mod 9
m = Int(k / 9) + 1
End If
Next Match
End With
Cells(1, 1).CurrentRegion.Columns.AutoFit
Application.ScreenUpdating = True
Set objIE = Nothing
Set Re = Nothing
End Sub
お礼
返事遅れすいません。 回答内容(修正後)をそのまま試してみたところ、文字化けせずうまくデータを取り込めました。 マクロの中身は自分にとって難しいものであるため、時間をとってみていきたいと思います。 大変助かりました。 ありがとうございました。