Excel2003でwebクエリによるデータ取得時に文字化けする問題

このQ&Aのポイント
  • EXCEL2003でマクロを使用しWEBクエリにてサイト上のデータを取得する際に、漢字表示部分が文字化けする問題が発生しています。
  • 文字化けはエンコード表示で見られるような記号などが入り混じったもので、同じ手順で取得しなおすと解消されることもあるようです。
  • 対処方法として、エクセル側で制御する方法が考えられますが、具体的な方法については不明です。
回答を見る
  • ベストアンサー

excel2003でwebクエリによるデータ取得時に文字化けします。

EXCEL2003でマクロを使用しWEBクエリにてサイト上のデータを取得しようとすると、漢字表示部分が文字化けすることがあります。 取得しているサイトは↓このようなところです。 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& 文字化けはエンコード表示で見られるような\記号などが入り混じったものです。 また同じ手順で取得しなおしてみるとうまくいくときもあります。 最近文字化けする頻度が多いため投稿した次第です。 エクセル側で制御する等、なにか対処方法はあるのでしょうか? 回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 しばらく、迷っていたので、返事を付けるのが遅くなってしまいました。 こんな風にしてみました。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

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

どうも返事はつかないようですが、また、修正します。  Cells(1, 1).Resize(, 9).Value = Array("順位", "コード", "市場", "名称", "取引値", "", "単元株数", "25日移動平均", "かい離率") →  Cells(2, 5).Resize(20).NumberFormatLocal = "M/D h:m"    ↓ Cells(2, 5).Resize(20).NumberFormatLocal = "MM/dd h:mm" このようにしたほうが、数字の並びがきれいです。

geki2001
質問者

お礼

返事遅れすいません。 回答内容(修正後)をそのまま試してみたところ、文字化けせずうまくデータを取り込めました。 マクロの中身は自分にとって難しいものであるため、時間をとってみていきたいと思います。 大変助かりました。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 修正をします。 Dim Re As VBScript_RegExp_55.RegExp   ↓ Dim Re As RegExp にしてください。上と下では、整合性がありませんでした。 なお、#1のバグという表現は撤回します。Excel2003を発表して、次バージョンの間に直さなかったのですから、MSでは、2003では直すということは念頭に入れていないような気がします。

関連するQ&A

  • 時価総額ランキング

    時価総額ランキングで上位200番目までについては、以下でわかるんですが、それ以下について載ってるサイト知りませんか? http://quoterank.yahoo.co.jp/ranking/search?b=1&kd=4&mk=11%2c%2012%2c%2021%2c%2022%2c%2031%2c%2032%2c%2043%2c%2047%2c%2083%2c%2087%2c%2094%2c%2097%2c%2017%2c%20A1%2c%20A7%2c%2037&ca=1&tm=day& できれば、時価総額1000億以上のものや上位200番目から500番目ぐらいのが載ってるサイトを知りたいんですが。 緊急に必要なんでお願いしますっす

  • ヤフーファイナンス本日の値下がり率ランキング

    http://quoterank.yahoo.co.jp/ranking/search?b=1&kd=2&mk=11%2c%2012%2c%2021%2c%2022%2c%2031%2c%2032%2c%2043%2c%2047%2c%2083%2c%2087%2c%2094%2c%2097%2c%2017%2c%20A1%2c%20A7%2c%2037%2c%2019%2c%2029%2c%2039%2c%2049%2c%2089%2c%2099%2c%20A9&ca=1&tm=day& これの3位のセラーテムテクノロジーはエルピーダ倒産とは関係ありますか?

  • APIから取得した情報の文字化けの解消

    はじめましてmaniと申します。 どうしても解消できない問題があった為みなさんにお聞きさせていただきたいと思い質問させていただきました。 私はPHPは初心者なのですが、現在、PHPを用いてAPIから取得した情報を表示させるサイトの構築をしています。 現在APIからの取得した情報を UTF-8 という文字情報で取得していますが、 現在作成しているサイトはPHPで シフトJIS で表示されています。 当然の事ながらAPIから取得した情報を表示させると取得した情報が文字化けしてしまいます。 エンコードからUTF-8に文字コードを変更させた場合取得した情報は文字化けしませんが作成したサイトの日本語が文字化けしてしまいます。 メタなどいろいろな方法を試したのですがどうしても解消できないため、大変困っています。 よろしければ文字化けを解消し、すべてが綺麗に表示できる方法を教えていただけるとありがたいと思います。

    • ベストアンサー
    • PHP
  • 文字化けするWebサイトがある

    いくつかのWebサイトを開くと、文字化けしています。 表示→エンコード→「自動選択」にチェックが入っており、「日本語(シフトJIS)」が●になっています。 そこで「日本語(自動選択)」を●にすると文字化けはなくなり、普通に見られます。 でもまた別の時にそのWebページを開くと文字化け。いちいち上記の設定を変えなければなりません。 エンコードの設定について、どうすればいいのか教えてください。

  • 文字化け

    先日、友達のパソコンなんですが、 mixiの特有のツールソフトを私も使っており、 友達も使っていました。 ですが、友達のパソコンだと、そのソフト自体が文字化けの状態になって表示されます。 ディスクトップのプロパティで、フォントの種類などを変えてみたのですがなんの変化もありませんでした。 そのとの名前は 「mixi足跡ランキング」と「ミクチェ」です。 mixi足跡ランキングのほうだと、 足跡を取得した際、取得して出てくるのもすべてが文字化けしています。 ミクチェのほうだと、 ソフト自体は大丈夫でしたが、そのソフトについている機能の「アラート画面」の文字がすべて文字化けしていました。 どうしたら直るのでしょうか? システムフォントの設定なのでしょうか? やり方を教えてください。 文字化けは[]0[]][[][a[ と言う感じで、縦棒が沢山あって表示されていました。

  • 一部文字化け

    サイトを開くと一部分(広告等、他のサイトを表示)が文字化けします。エンコードを変えて表示すると文字化けしていた部分は、直るのですが今度は本文が文字化けしてしまいます。対処方法はありませんか?

  • IEで文字化けする

    Win98、IE5を使っていますが、文字化けします。ほとんどのサイトは大丈夫なのですが、2~3割のサイトは文字化けします。場合によっては画面に何も表示されないときがあります。しかし、『表示』→『エンコード』→『日本語(自動選択)』を選ぶと文字化けせずにちゃんと表示されます。でも、また同じサイトを開くと文字化けしこの作業を毎回行わなくてはなりません。常に文字化けしないような設定の方法はないのでしょうか?

  • 文字化けの防止法

    ネット上のサイトから、特定の情報を取り出し、その情報のファイルを作成し、保存するというプログラムを作っています。 取得するサイトの文字コードは、 <meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp"> と指定されていました。 IEでこのページを開くと、エンコードは自動選択で「EUC」になっていました。 さて、php_editor の文字コードを「UTF-8」に指定し、プログラムを作成しているのですが、 全角文字の含まれた文字列を取得し、表示させようとすると、文字化けしてしまいます。 (このときの表示画面は、http://localhost/~です) 設定を変更していると、IE(http://localhost/~)の表示の文字化けも進み、そのときのIEの エンコードを確認すると、中国語系や西ヨーロッパ系のものになっていることがありました。 文字化けさせない手順や、設定はどのように行えばいいのでしょうか?

    • ベストアンサー
    • PHP
  • 文字化けを直すには?

    文字化け http://www.ocn.ne.jp/c-navi/index4.htmlのHPで文字化けが起こります。エンコードを替えてもうまくいきません。Windows7です。教えて下さい。

  • 一時的な文字化けについて

    サイトのリニューアルを行いました。 ・旧サイト → sjis (静的なhtml) ・新サイト → utf-8 (WordPress) 新サイトのmetaでutf-8を指定しファイルもutf-8で保存しているのですが、リニューアル後の最初のアクセス時に文字化けする場合があります。 サーバーのdefault_charsetもutf-8です。 ブラウザ上で右クリックしてエンコードからutf-8を選択するとそれ以降は全く文字化けしないのですが、これは旧サイトのキャッシュの問題なのでしょうか? 今回のリニューアルに限らず、いろんなサイトを見ているとたまに文字化けしているサイトがあり、エンコードから指定すると正しく表示される場合もいくつかあります。 修正する方法を知っている人であればいいのですが、知らない人がサイトに訪れた場合、ただの文字化けしているサイトです。 エンコードから正しい文字コードを指定すればそれ以降は文字化けしないので、キャッシュなのかブラウザの問題なのか明確な答えはわからないのですが、確実に正しいエンコードで表示させることってできるのでしょうか? 可能であれば方法を教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう