• ベストアンサー

エクセルのWEBクリエで取り込めないデータ

DOUGLAS_の回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.15

>今度のテストは呼び込みがおっそろしく早いですねぇ!  そうでしょう。  ですから、「今朝、画期的な方法を思い付」いたと書いた次第です。 #この スレッド をご参考にされる方もあろうかと存じますので、この点につきまして、少し注釈しておきます。 #当初は、「IEオブジェクト」というものを使っていましたが、最近では、もっと読み込みの早い「WinHttp」という オブジェクト を使う場面がよく見受けられます。 #私は最初から、この「WinHttp」を利用して試行してみたのですが、如何せん文字化けが酷くて。。。 #恐らく「charset」関連の プロパティ か何かがあるのでしょうが、それを検索する元気がありませんでした。 #ところが、似たような オブジェクト で「XMLHTTP」というものがあるのですが、こちらで読み込んでみますと、何と、文字化けせずに読み込めるではありませんか!・・・というようなことに、今朝、気付いたのです。 -------------------------------------------------- >関数についてはご指示どおり排除してけっこうです。 >日付の次はすべてSD(半角)になります。  了解いたしました。 >1行目を ■110725SD401に変えて >開始時間の行は削除対象のものでした。 >したがって上記は1行目だけでかまいません。  ということは、 「番組案内 (4時間サイクル)」 の部分も必要ないということでよろしいでしょうか?  必要ないと判断してそういう プログラム を書きます。  ただし、「必要な場合は」の注釈も付けておきます。  ということで、今まで提示された条件を下記に列挙し、下記の点について成就する マクロ を文末に掲げます。 1)何も入力されていない新規の ブック に「Sheet1」・「Sheet2」という2つの ワークシート があります。 2)Sheet2 A列 に羅列された「400 ~ 499」の整数に対して、順次、 http://www.stardigio.com/songlists/lists1/{整数部分}.html の ページ を読み込み リスト 部分の データ を Sheet1 の A1 セル から貼り付けます。 3)貼り付けられるべき データ の内、 Ch.401 J-POP最新ヒットチャート 放送日 : 2011/7/25~2011/7/31 「番組案内 (4時間サイクル)」 開始時間 : 04:00~08:00~12:00~16:00~20:00~24:00~ の3行は、「■110725SD401」の1行だけに集約します。 4)途中の「楽曲タイトル 演奏者名」の行と空白行、及び、文末の *個人的に楽しむ場合を除き、著作権上、無断複製は禁じられています。 *FAXサービスは、(月)午前中入替作業の為、午後以降のご利用をお願い致します。御了承下さい。 の行はすべて削除します。 5)(2) ~ (4) により成形された データ が、A・B列に書かれた ワークシート を マクロ の書かれた ブック と同じ フォルダ内 に「401_20110725.xlsx」という ファイル名 で保存します。 '------------------------------------------------- Sub use_XMLHTTP()  Dim myList As Range  Dim objHttp As Object  Dim myCh As Variant  Dim strURL As String  Dim str404 As String  Dim myTbl As Variant  Dim CB As New DataObject  Application.ScreenUpdating = False  Sheets("Sheet2").Select  Rows(1).Insert  Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete  Set myList = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))  Set objHttp = CreateObject("MSXML2.XMLHTTP")  With objHttp   Sheets("Sheet1").Select   For myCh = 1 To myList.Count    strURL = "http://www.stardigio.com/songlists/txtdata/lists1/" & myList(myCh) & ".txt"    .Open "GET", strURL, False    .Send '   読み込みエラー が出るようでしたら、この下の「’」を外してください。 '   Application.Wait (Now + TimeValue("0:00:05"))    If (.Status < 200 Or .Status >= 300) Then     str404 = str404 & " " & myList(myCh)    Else     myTbl = .responseText     myTbl = Split(myTbl, "放送日")     myTbl(0) = Left(myTbl(1), InStr(myTbl(1), "~"))     myTbl(0) = Trim(Replace(Replace(StrConv(myTbl(0), vbNarrow), ":", ""), "~", ""))     myTbl(0) = Format(myTbl(0), "yymmdd")     myTbl(0) = "■" & myTbl(0) & "SD401" '    貼り付けエラー が出るようでしたら、この下の「’」を外してください。 '    Columns("A:B").Clear     With CB      .SetText myTbl(0) & vbCr & Mid(myTbl(1), InStr(myTbl(1), "■"))      .PutInClipboard      .GetFromClipboard     End With     Range("A1").Select     ActiveSheet.Paste     On Error Resume Next     Columns("A:A").Find("個人的に楽しむ場合を除き").Resize(2).Clear     On Error GoTo 0     Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete     Range("A1").Select     Sheets("Sheet1").Copy     ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & _      myList(myCh) & "Ch_(" & Replace(Date, "/", "") & ") .xlsx", _      FileFormat:=xlOpenXMLWorkbook     ActiveWorkbook.Close    End If   Next   Columns("A:B").Clear  End With  Set objHttp = Nothing  Application.ScreenUpdating = True  If str404 <> "" Then MsgBox Join(Split(str404), " Ch") & " のページは見つかりませんでした。" End Sub '------------------------------------------------- *「番組案内 (4時間サイクル)」の部分が必要な場合は、 .SetText myTbl(0) & vbCr & Mid(myTbl(1), InStr(myTbl(1), "■")) の行を .SetText myTbl(0) & Mid(myTbl(1), InStr(myTbl(1), vbTab)) に差し替え、 ActiveSheet.Paste の後に、 Columns("A:A").Replace "楽曲タイトル", "" を挿入してください。 ==================================================  上記の マクロ をお試しいただいて、まだ、不具合等がございましたら、どうぞ、仰ってください。 #「前回」の件は、本件終了後にいたしましょう。

noro6857
質問者

お礼

今回のVBAはまったく問題なく動作し、10以上のchの取り込みも新幹線並のスピードで作成されました。 毎週25chのリストUPをしていたのですが、これならストレスなく簡単に作業できます。 これをもとにLotusで使っている関数をエクセル用に組み換える作業を自分でもやってみようと思っています。 なお、番組案内 (4時間サイクル)」はあったほうがいいかなと思い、修正の上やってみたのですがこちらだと不要な「開始時間」の行が残ってしまいました。 XMLHTTPについては早速サイトで調べて見たのですが、VBAそのものをよく理解できていない私にとってはなかなかむつかしい内容ですが、A1にあったようにJAVAを使ったサイト等に有効なんでしょうね。 わたしもLotus時代にマクロを作ったときに色々新しい手法を見つけてテストがうまく行くたびにマクロを作ることが楽しかったのですが、これだけ奥深いエクセルVBAを覚えればきっと同じような楽しさを味わえるのかもしれません。

noro6857
質問者

補足

テストして気がついたのですが 1行目の「■110725SD401」はSDは固定ですがそのあとは該当Chの数字にしたいので、サイト元データの1行目にある白抜き数字の○○Chを当てはめていただければと思います。あわせて110725についてはサイト元データの2行目の放送開始日が入るようにしておいてください。(毎週変わります) また、412ch以降で、当該chのデータが読み込まれた後に、411Chの一部が取り込まれているのに気がつきました。 たとえば ■80年代J-POPヒット曲と4回出てきたあと、 ■2001年 7月のヒットコレクション PART 2 ■2000年 7月のヒットコレクション PART 1 のデータが続いていました。 412ch以外でも見られます。

関連するQ&A

  • Webクリエ うまく読み込みできません><

    Webクリエ うまくできません>< http://fx.himawari-group.co.jp/report/weeklycalendar.html のサイトのカレンダーを読み込みたいのですが・・・ エラーが出てしまいます! *画像参照お願い致します!

  • 新しいクリエ買ったのはいいんですが

    とうとうVZ90買いました。 いままで使っていたクリエからデータを移したいのですが、そのままできるんじゃないかなと思い、 強引にホットシンクさせたらやっぱりダメでした。 前のクリエの全部のデータをそのまま移せる方法って ないんでしょうか・・・? MSバックアップで移行もしてみましたが、このデバイスでバックアップされたものではないと蹴られてしまいました

  • ウェブサイトのデータの入手方法

    VisualBasic6.0でウェブサイトのデータをオブジェクトとして 取得する方法が判りません。 ExcelのWebクリエのようにHTMLのテーブルタグの内容が直接 オブジェクトとして取得できるようにしたいのですが、方法 が判りません。 今は、タグを一つ一つ外してから、読み込むようにしている のですが、サイトが変更されると一からやり直しなので、で きればもっと簡単な方法があればお願いします。

  • エクセルのデータを自動的にWebに入れるには?

    いつもお世話になっています。 エクセルのデータをホームページに入れる時、決まった動作の繰り返しをするので、これを自動化することは出来ないでしょうか?VBAだとエクセル内部でしか出来ないのではないでしょうか? こういう操作です。 エクセルの場面でセルをCtrl+Cでコピーして、リターンキーを押して(セルが次のセルへ飛ぶ)、Alt+TabでWeb画面へ移動して、Ctrl+VでWebにエクセルの数値を貼り付けて、Tabキーを数回(回数は一定)押して次の入力欄へ移動させて、Alt+Tabでエクセル画面へ戻って、またCtrl+Cでコピー。 この繰り返しでエクセルの数値をWeb画面に入力するのです。このような定型的な動作はコンピューターが得意とするはずですが、VBAでは実現できない(と思う・・。エクセルの外部にまで操作出来るのでしょうか?)。 何か方法があるはずですが、ご存知の方がいらっしゃればよろしくお願いしたします。

  • ボタン天国をインストールするとWEBからのデータ取り込みができない

    Excel用ボタン天国100をインストールしたところ、「データ」→「外部データの取り込み」→「新しいWEBクリエ」によるWEBデータの取り込みが出来なくなりました。

  • VBAを用いて、ウェブからデータを取り込みたい

    エクセルVBAでウェブからデータを取り込みたいと思い、いろいろ挑戦していますが、以下のやり方(1)と(2)は失敗中です。 取り込みたいのは、ウェブページ中に描かれてある「表」の部分のデータです。 アドバイスをお願いいたします。 ◆◆◆◆◆失敗(1)◆◆◆◆◆ ActiveSheet.QueryTables.Add(Connection:="url;http://***省略***.htm", Destination:=Range("A1")) の方法の場合、取得したデータをエクセルシートに張り付けた場合に生じる文字化けがなおらず挫折・・・ QueryTableは文字コードを指定して読み込めないので困難という結論に至りました。 ちなみに目的のウェブページはshift-JISでcharsetされてますが、取得したいデータ部分はSQLサーバーでUTF-8で記述されていると思われます。 →http://okwave.jp/qa/q7864296.html ◆◆◆◆◆失敗(2)◆◆◆◆◆ ユーザーフォーム機能から、WEBブラウザーコントロールを用いて目的のウェブページを表示する方法では、表示したウェブページの情報をエクセルシートに転記する方法が分からず挫折・・・ url_report = "http://****省略.htm" WebBrowser1.Navigate url_report 'ここから先、どうすればエクセルシートにデータ取得できる? 上記(1)や(2)以外で他のやり方も含め、経験者の方のアドバイスをお願いいたします。 ウェブページ中の表データをエクセルシートにVBAで自動取得したいのですが・・・何か良い方法がありますでしょうか? ((+_+))

  • クリエでMacでMP3は聴けますか?

    クリエ(Clie)のPEG-N700CがMP3に対応したと雑誌で読みました。 これまで、MacからクリエにはOpenMG形式のファイルを落とせなかったようですが、MP3になって、Macからもクリエに音楽データを落とせるようになるのでしょうか? Macユーザーなんですが、クリエでMP3を聴きたいのです。方法を教えてください。 まず、メモリースティックとメモリースティックリーダーはやっぱり必要なんですよね? また、ダウンロードが始まったというAudioPlayer Ver.2はMacでも使えるのでしょうか?

  • Excel VBA で Webからデータを取得する方法

    Excel VBAを使ってWebページからデータを 取得する方法を探しています。 最初に、そのWebページの認証ページにIDをパスワード をVBAから自動で送信したいのですが、方法が全く わかりません。 認証ページはJavascriptを利用したページです。 どちらかご存知の方がおられましたら、 ご教授ください。

  • またまたエクセルでWEBデータを取り込む

    下のVBAは以前にお世話になった方に教えていただいたWEBからのデータ取得するものです。 日付を入力することで、その日のデータを取り出すことができます。 ところがWEBのURLが変更になってしまいました。 当方、VBAは疎いため適当に部分修正で利用しようとしたもののなかなかうまくできません。 呼び出したデータも以前と若干形式がちがっているためそのへんも直したいところがあるのですが 取りあえずWEBの取り出し方記述を教えていただければありがたいです。 (70, 80, 32, 62, 101,…というのはたぶんジャンル区分なので今回は不要です。) よろしくお願いします。 WEBURL(旧) http://www.m******/****/0062/00620726.html WEBURL(新) http://m*****/*****/2012-04-17/ ●旧WEB取り出しVBA Sub Using_Web_query30A() Dim arrMenu As Variant Dim myDate As String Dim myURL As String Dim Connection_URL As String arrMenu = Array(70, 80, 32, 62, 101, 102, 90, 120, 40, 22, 31) myDate = InputBox("オープンする日付を「月/日」のように入力してください。", _ "日付の入力", Format(Date, "m/d")) myURL = "0062/0062" & Format(Split(myDate, "/")(0) * 1, "00") & _ Format(Split(myDate, "/")(1) * 1, "00") Connection_URL = "http://www.m*********/***/" & myURL & ".html" Columns(1).ClearContents With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Connection_URL, Destination:=Range("A1")) .WebFormatting = xlWebFormattingNone .WebTables = "9" .Refresh BackgroundQuery:=False End With

  • エクセルのWEBクエリで取り込めないデータ(続)

    QNo6887062で教えていただいたWEBからデータを取り出すVBA(A15)で対象URLのレイアウトが変更になってしまいました。そこで引き続き活用したいため修正方法を教えていただければと思います。 URLの変更については一部対応できたのですが、取り出す範囲、除去する方法です。 具体的にはQ&Aの中で書きますので、上記VBAを修正できる方でお願いします。 Excel2010/WinXP