• ベストアンサー

エクセルのwebクエリについて

A1に銘柄コード(4桁の数字)が入力されている場合、 B1以下にデータを取得するマクロを作りたいと考えています。 webクエリ機能を使えばデータを取得できるのはわかったのですが、 マクロのコードにA1の数値を参照させる方法がわかりません。 当方の環境は Windows XP Excel 2007 です。 どうか皆様よろしくお願い致します。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://table.yahoo.co.jp/t?s=6650.T&g=d", Destination:=Range("A1")) WEBクエリーをマクロの記録で実行すると最初の部分がこんな感じになると思います。 "URL;http://table.yahoo.co.jp/t?s=6650.T&g=d" この部分がクエリーで取り込むHPアドレスです s=6650の6650が銘柄コードに当たります。 "URL;http://table.yahoo.co.jp/t?s=" & Range("A1").Value & "T&g=d" へ変更すれば目的の銘柄のページが選択可能かと思います(未検証ですが) ただし、ページによってテーブル番号が変更になる場合があるので、すべての銘柄で目的のデータが取り込めるかは微妙なところです。 そのあたりの工夫も必要になります。

rabbit78
質問者

お礼

なるほど。Rangeによって参照する事ができるのですね。 イメージ通り取り込むことができました。ありがとうございました。

その他の回答 (1)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

WEBクエリーが外部データの取り込み>新しいWEBクエリーの事と前提しての話になりますが。 どのようなページから取り込みを行うか分かりませんが、WEBクエリーをマクロにした場合、 WebTables ="xx"   'xx=テーブル番号 で選択されたテーブルを取り込む形となります。 これはそのページ内のテーブルの並び順に番号が振られています、銘柄コードとテーブル番号の関連付けが出来ていないとテーブル番号の指定は出来ないと思われますが、そのあたりは解決しているのでしょうか?

rabbit78
質問者

補足

説明不足につき申し訳ありません。 データの取得先はヤフーファイナンスを想定しています。 webクエリを使用して銘柄の時系列データを取り出すマクロを マクロの自動記録機能にてコード作成する事はできるのですが、 これだと1つの銘柄しか取り出す事ができません。 (自動記録の際に使用した銘柄のみ) そこで、シートのあるセル(例えばA1)に銘柄コードを入力し、 これをマクロにて読み込んで取り込めればと考えています。 (A1セルを可変にしたい) 引き続きよろしくお願い致します。

関連するQ&A

  • エクセルのWEBクエリ

    エクセルのWEBクエリを使って株の時系列データを取得しています。マクロで多銘柄(500銘柄くらい)を取得しているため、「データ取得中」「応答なし」で固まってしまいます。 この問題を回避したいのですが、どなたか教えてください。

  • WEBクエリを使用して企業情報を取得したい

    VBA初心者です。よろしくお願いいたします。 Excel2007のWEBクエリを使用してyahooファイナンスより複数銘柄の企業情報を取得したい。 ・Sheets("meigara")のセルA列(複数銘柄)から企業コードを取得。 ・WEBクエリを実行させて、取得データを銘柄毎にシートに書き出し 上記を複数銘柄で繰り返し処理したい。 【詳細】 Sheets("meigara").SelectのA列に複数銘柄コードを記載 繰り返し企業コードを取得しSheets("data1")、Sheets("data2")、Sheets("data3")…と WEBクエリの書き出しを銘柄コード毎にシートを作成して繰り返し処理したい 宜しくお願いいたします。 ----------------------------------------------------------------------- Sub iyahoo情報() ' ' yahooファイナンス銘柄情報取得 ' Sheets("data").Select With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://stocks.finance.yahoo.co.jp/stocks/profile/?code=2162.T", _ Destination:=Range("$A$2")) .Refresh BackgroundQuery:=False End With End Sub ※上記の2162に代入したい

  • WEBクエリについての質問

    WEBクエリにて、とあるホームページからエクセル(2003)にデータを取り込んでいるのですが、数字の取り込みについて教えてください。 ホームページ内の数字(4桁)を取り込みたいのですが、 例えば 1234という数字を取り込むとエクセルには1234と表示されますが、 0123という数字を取り込むとエクセルには123しか 0023という数字を取り込むとエクセルには23しか表示されません。 これを、 0123という数字を取り込むとエクセルに0123と 0023という数字を取り込むとエクセルに0023と 0003という数字を取り込むとエクセルに0003と表示したいのですが、 どうしたらよろしいでしょうか。 よろしくお願いします。

  • Excel VBAでWebクエリ更新

    VBA初心者です。 Excel VBAで、Webクエリを更新させ、取得したデータを同じBook内の別のSheetに コピーさせたうえで、データのソート等を行いたいと考えています。 上記の操作をマクロで記録し、走らせてみると、Webクエリのデータ更新(取得)が 完了する前に、それ以降の操作に進んでしまいます。 Webクエリのデータ更新(取得)が完了してから、次の操作に進ませるためには、 どのようにすれば良いでしょうか? よろしくお願いします。

  • エクセルwebクエリについて

    エクセルwebクエリについて WEBクエリを使って、データを新しいワークシートに摘出することはできるのですが、それをマクロなどで連続して行うことはできるのでしょうか? 具体的には、Aラインに摘出元(ターゲット)のURLが数百から千数百個並んでおり、それら1つずつを新しいワークシートに摘出したいと考えています。 環境はWIN XP excel2000 を使用しています どうか、ご教授願います

  • マクロでWEBクエリで取り込むURLを変更したい

    お世話になります。 困っております。 当方、office2013エクセルでございます。 第3者(一緒に仕事しているスタッフ)でも使えるように、マクロで処理できるエクセルのファイル作りたいのです。 そこでやりたいことがあります! マクロを使って、あるURLをWEBクエリで取り込んで、その見せたい部分だけ別シートでピックアップしているファイルを作りました。 これから更にやりたいと思ったのは、その呼び出すクエリのURLを、見る人(このファイルを閲覧する人)が任意で変更できるようにしたいのです。 そのWEBクエリで呼び出すURLは、URLの末尾にある1桁~4桁の数字が違うだけのURLです。 見たい人が、決められたセルに、希望の番号を入れると、そのクエリのURLの末尾だけ書き換えたURLのWEBページを取り込めるようにできるようにしたいのです… 簡単そうなのですが、私の知識では 頭から煙が出てきている状態です…(´;ω;`) ぶん投げ的な質問で恐縮でございます。 質問、言葉遣いなど、不適切なことがありましたら、ご容赦いただきたく思います。 どうぞ、よろしくお願いします。

  • Windows7でのExcelのWebクエリについて

    Windows7でのExcelのWebクエリについて Excel VBA でwebクエリーを使ってMyYahooのHP上のデータを取ってきています。 (MyYahooにログイン済みの状態で実行しています) Windows Xp ではうまく行くのですが、Windows7 では、MyYahooのログインしていないときのページが帰ってきて、うまく行きません。 どうやら、Windows7では、Excel VBA のwebクエリーにMyYahooのユーザーコードが引き継がれないような感じです。 どうすれば、うまく行くのか、教えて下さい。 お願いします。

  • EXCELのwebクエリについての質問です。

    EXCELのwebクエリについての質問です。 よろしくお願いします。 webサイトにあるデータをエクセルに自動で取り込みたいのですが、 そのサイトが、データ100件毎にページを増やしていく仕様なので50ページあったら50回 も手動でデータを取りにいかないといけません。なんとかして自動にしたいのですが・・・ そのサイトはhttp://○×○×.com/page=1/のように"page="に数値を入れれば良いのでエクセルでなんとかなりそうかなと思い質問しました。 ウェブクエリ取得をマクロで記録してみました。 With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://○×○×.com/page=1", Destination _ :=Range("$A$1")) .Name = "page=1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "2" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With この中で、 1."page=1"を連番で連続取得したい。(総ページ数は人的に確認して、どこかに入力できればいいです) 2.エクセルに1つの表にしたいので:=Range("$A$1")だと上書きしていってしまのでどうにかしたい。 3..Name = "page=1"も連番で増やしていきたい。 こんなことは可能でしょうか。 VBAは初心者以下です。 どなたかお助けください。

  • Excel2007のWebクエリとマクロについてです。

    Excel2007のWebクエリとマクロについてです。 初投稿です。わかりづらい質問で申し訳ないのですが、気になる点があればすぐに補足しますのでよろしくお願いします。 気象庁のサイトから過去の気象データをWebクエリで参照しています。 下のサイトから1日分のデータをWebクエリを使って抜き出しました。(Excel2007) 1年分のデータ(365日分)を同じように抜き出したいのですがクエリで同じ操作をするのは面倒に感じています。 マクロのボタンなどで時間を短縮して参照する方法があれば教えてください。 www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?prec_no=73&prec_ch=%88%A4%95Q%8C%A7&block_no=47887&block_ch=%8F%BC%8ER&year=2009&month=01&day=1&view=p1 上記のyear=2009&month=01&day=1の部分を変化させて2009/01/1~2009/12/31までのデータをExcelに貼り付けたいです。

  • WEBクエリについての質問

    昨日、同様の質問をしましたが解決しませんでしたので、 もう一度実例を挙げ質問させていただきます。 WEBクエリにて、とあるホームページからエクセル(2003)にデータを取り込んでいるのですが、数字の取り込みについて教えてください。 ホームページ内の数字(4桁)を取り込みたいのですが、 例えば 1234という数字を取り込むとエクセルには1234と表示されますが、 0123という数字を取り込むとエクセルには123しか 0023という数字を取り込むとエクセルには23しか表示されません。 これを、 0123という数字を取り込むとエクセルに0123と 0023という数字を取り込むとエクセルに0023と 0003という数字を取り込むとエクセルに0003と表示したいのですが、 どうしたらよろしいでしょうか。 実際に取り込んでいるデータ(ホームページ)は、みずほ銀行の以下のページです。 http://www.takarakuji.mizuhobank.co.jp/numbers/num4-new.html この中の、抽選すうじを取り込んでます。 2008年12月8日の抽選すうじを取り込むと、エクセルには5889と表示されますが、 2008年12月9日の抽選すうじを取り込むと、エクセルには756と表示されるため、これを0756と表示したいです。 よろしくお願いします。