• ベストアンサー

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

WEBデータをVBAで取り込みたいと思っていますが、 次のサイトをWEBクリエで取り込もうとしてもデータ内容が取り込ません。 WEBによって取り込めない場合もあるのでしょうか。 また取り込む方法は他にありますか。 ※取り込みたいデータ http://www.stardigio.com/songlists/lists1/401.html

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

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

>「図が大きすぎます。入らない部分は切り捨てられます。」 >VBAA25実行時(A23でも)なぜかときどき張り付けられない  同じ理由から来る エラー ではないかと存じますので、とりあえず、下記でお試しになった結果をお知らせください。 ActiveSheet.Paste の前に While Application.ClipboardFormats(1): DoEvents: Wend を Application.CutCopyMode = False の前に Range("A1").Copy を挿入してみてください。 -------------------------------------------------- >※ちあきなおみの「注」のL列消去は今までやっていた方法なので >今回の改善でゼロ表示するようになり楽になりました。  了解しました。 -------------------------------------------------- >前に、読込み後下記VBAを実行している旨記述しましたが >ANo25VBAの最後にこれをを勝手に加えてしまって同時処理 >しているのですが、かまわないでしょうか。(ダブりますか?)  ん? これにつきましては、「ANo.24」に書きましたように、 >なお、お示しの2行の マクロ を実行されるときは、・・・ から >「Sub for_spacediva2」から、以上の2点を訂正した・・・ までの操作をなさってください。

noro6857
質問者

お礼

Range("A1").Copy を挿入してみてください。 一応出なくなりました。 「一応」というのは、修正後最初1回出たのですが、その後は出ていないので、しばらく様子を見てみます。ありがとうございました。

noro6857
質問者

補足

今回もご丁寧にたくさんのアドバイスをいただきありがとうございました。おかげさまでこれからも毎日活用できそうです。 また機会がありましたらよろしくお願いいたします。

その他の回答 (25)

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

>「実行時エラー5 >と出て、 >myTbl = Left(myTbl, InStr(・・・ >がハイライトされていました。  大変失礼いたしました。  コード の中では、"</table>" としておりますが、 myTbl = objIE.Document.getElementsByName("SongLists") で得られる htmlコード の中では、その部分が大文字の "</TABLE>" になっておりますので、[InStr 関数] の引数を省略せずに [compare] (文字列を比較検索する時点で大文字・小文字を問うか問わないか)も指定しなければなりませんでした。 myTbl = Left(myTbl, InStr(myTbl, "</table>") - 1) & "</table></div></div>" の部分を myTbl = Left(myTbl, InStr(1, myTbl, "</table>", vbTextCompare) - 1) & "</table></div></div>" に差し替えてお試しください。

noro6857
質問者

お礼

VBA実行時にエラーしました。 「実行時エラー1004 Worksheetクラスのoasteメソッドが失敗しました。」 デバック ActiveSheet.Paste なお、取り込めるようになったらひとつだけ追加VBA記述をお願いしようかと思っていたのですが、ここでお願いしておきたい思います。 Excelにペーストしたあと、A列に「楽曲タイトル」(B列に「演奏者名」)という行が多い411chで8か所、最低でも1行出てきます。この行をVBAの中で削除できればと思っているのですが、可能でしたらあわせてご指導くださるようお願いします。

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

>「ユーザー定義型が定義されていません」 >と出てしまいました。  これは、「このチェックができないせい」です。 >Microsoft Forms 2.0 Object Libraryseというのが > 「Microsoft Feeds 2.0 Object Library」しか見当たらない  え~っと、操作は下記でよかったかと存じます。 1)VBE で [挿入(I)] - [ユーザー フォーム(U)] を クリック し、ユーザーフォーム を追加します。 2)[プロジェクト エクスプローラ](左側の樹形図)の [VBAProject(Book名)] - [フォーム] - [UserForm1] を 右クリック - [Userform1 の解放(R)...] を クリック します。 3)「解除する前に UserForm1 をエクスポートしますか?」には [いいえ(Y)] を クリック します。 4)[ツール(T)] - [参照設定(R)...] を クリック します。 5)「Microsoft Forms 2.0 Object Library」に チェック が付いていることを確認します。

noro6857
質問者

お礼

ご指示のように行ない Microsoft Forms 2.0 Object Library のチェックまでたどりつきました。 そこでVBAを実行したら 数字を入力後に 「実行時エラー5 プロシージャの呼び出し、または引数が不正です。」 と出て、デパックを見たら myTbl = Left(myTbl, InStr(myTbl, "</table>") - 1) & "</table></div></div>" がハイライトされていました。

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

#大変お待たせいたしました。 #あれこれとしておりまして、遅くなってしまいました。 >ついでに便乗してしまって申し訳ないですが  ぃぇぃぇ、最初からそのつもりですので、ご遠慮なく。。。 >読み込む範囲ですが >HP上の数行上の「黒地に白抜きの文字の部分」から含める  これにつきましては、 .Document.getElementsByTagName("table")(0).outerHTML の行を .Document.getElementsByName("SongLists")(0).outerHTML に差し替えるだけでOKです。 >「401」の部分が色々あるのですが テキストボックス等に >入力してその数字が反映されるようになると連続して >作業ができるのでありがたい  そう来られると思っておりましたので、次の段階を既に考えておりました。  前回答のままでは、毎回、「この Web ページがクリックボードへアクセスすることを許可しますか?」という問い合わせがありますので、 http://officetanaka.net/excel/vba/tips/tips20.htm を参考に、他の方法で クリップボード に アクセス することにいたします。  先ず、VBE(Visual Basic Editor)において [ツール(T)] - [参照設定(R)...] を クリック し [参照設定 - VBAProject] ダイアログ の [参照可能なライブラリ ファイル(A)] の中から「Microsoft Forms 2.0 Object Library」の前の チェックボックス を オン にし、[OK] を クリック します。 Sub 繰り返し用()  Dim objIE As Object  Dim myCh As Variant  Dim myTbl As String  Dim CB As New DataObject  Set objIE = CreateObject("InternetExplorer.Application")  With objIE   Do    myCh = Application.InputBox("チャンネル番号を入力してください。" _     & vbNewLine & vbNewLine & "終了するときは キャンセル してください。", _     "STAR digio", 401, 100, 100, , , 1)    If VarType(myCh) = vbBoolean Then Exit Do    If CInt(myCh) <> myCh Or myCh < 400 Or myCh > 499 Then     MsgBox "400~499 の整数を入力してください。"    Else     .Navigate "http://www.stardigio.com/songlists/lists1/" & myCh & ".html"     Application.Wait (Now + TimeValue("0:00:2"))     myTbl = objIE.Document.getElementsByName("SongLists")(0).outerHTML     myTbl = Left(myTbl, InStr(myTbl, "</table>") - 1) & "</table></div></div>"     With CB      .SetText myTbl      .PutInClipboard      .GetFromClipboard     End With     Cells(Rows.Count, 1).End(xlUp).Offset(2).Select     If Selection.Address = "$A$3" Then Range("A1").Select     ActiveSheet.Paste    End If   Loop   .Quit  End With  Set objIE = Nothing End Sub

noro6857
質問者

お礼

ありがとうございます。 まず、ツール参照のMicrosoft Forms 2.0 Object Libraryseというのが 「Microsoft Feeds 2.0 Object Library」しか見当たらないのですが… (Excel2011) それとこのチェックができないせいかどうかわかりませんが Sub 繰り返し用()以下を実行しますと、 コンパイルエラーとなり Dim CB As New DataObjectのラインで 「ユーザー定義型が定義されていません」 と出てしまいました。 よろしくお願いします

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

 他のご質問を拝見すると htmlタグ の知識も多少おありのようですし、VBA の操作もお出来になるようですので、VBA の サンプルコード をお一つ。 Sub WEBクリエぢゃなくてqueryだよ()  Dim objIE As Object  Set objIE = CreateObject("InternetExplorer.Application")  With objIE   .Visible = True   .Navigate "http://www.stardigio.com/songlists/lists1/401.html"   'While .Busy Or .ReadyState <> 4: DoEvents: Wend   Application.Wait (Now + TimeValue("0:00:2"))   .Document.ParentWindow.ClipboardData.ClearData "text"   .Document.ParentWindow.ClipboardData.SetData "text", _    .Document.getElementsByTagName("table")(0).outerHTML   Range("A1").Select   ActiveSheet.Paste   Selection.Columns.AutoFit   .Quit  End With  Set objIE = Nothing End Sub

noro6857
質問者

お礼

VBAで作っていただきありがとうございます。 構文はよく理解できませんが、なんとなくクリップボードでの作業をVBA化したものでしょうか。うまく読み込めました。これならいけそうです。感謝です。 ついでに便乗してしまって申し訳ないですが、「401」の部分が色々あるのですが テキストボックス等に入力してその数字が反映されるようになると連続して作業ができるのでありがたいのですが。 あと読み込む範囲ですが基本的にはこれでもかまいませんが、HP上の数行上の「黒地に白抜きの文字の部分」から含めることは可能でしょうか あつかましいお願いをしてすみません。よろしくお願いします。 ※クエリでしたね。すみませんでした。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

このページはJAVAで逐次生成されているため,ExcelのWEBクエリでは取り込みできません。 #WEBクエリで取り込みできるためには,ホームページのソースを表示させたときに,そこにデータが記入されている必要があります。 エクセルに取り込むのが目的ならもちろん見えているページを直接コピーして貼り付ければ出来る事ですが,そういうお話では無いと思いますので,下記にあるような「ホームページ巡回ソフト」を試してみてはいかがでしょう。 http://www.vector.co.jp/vpack/filearea/win/net/www/auto/

noro6857
質問者

お礼

回答をありがとうございました。 なるほど、JAVA生成のHPでは取り込めないのですね。 「ソース表示でデータが表示それている必要がある」とても参考になりました。 フリーソフトの紹介をいただいたので早速いくつか試してみましたが 残念ながら思うようになりませんでした。 今までどおりCOPY、ペーストでやるっきゃなさそうです。

関連するQ&A