• 締切済み

webクエリで取得した表の処理について

エクセルでwebクエリで取得した表を画像のように処理をマクロでしたいのですが どうすればいいですか 簡単に説明すると 表を取得 ↓ F12にあるメイショウマンテンをシニスターミニスターの横に移動させる ↓ B3の2019年1月19日(土) | 1回京都6日 | 15:35発走のうち2019年1月19日をシニスターミニスターの横に移動 ↓ B4のすばるステークスを2019年1月19日の横に移動 ↓ 12 13行を削除 ← これはできています ↓ 別のシートに移動 これで終わりです わかりにくければすいませんよろしくおねがいします

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

何の面白味もないないような課題だな。項目の組み換えだけだ。 Sub test07() k = 2 'Sheet2のデータの最初行 '--シートの定義 sh1 = Worksheets("Sheet1") ’(原データ・)インプットシート WEBクエリ結果 sh2 = Worksheets("Sheet2") ’アウトプットシート For i = 11 To 最終行 Step 3 sh2.Cells(k, "A") = sh1.Cells(i, "A") sh2.Cells(k, "B") = sh1.Cells(i, "B") '・以下同様 略 '・ k = k + 1 '次の行に書き出す用意 Next i End Sub ’--- Sheet1の最終行番号はいくつ、や1つの順位で3行おき(Step 3に影響)データらしいが、正しいかどうか私は確かめる気がないが、確認して。 データの代入(引っ張ってくるデータ)は、i行からの項目と、i+1行からの項目の2種がある(2行上下構成の)ようだが、上記で省略した部分の、代入式の右辺で、Cells(,)の行指定部分(カンマの左の引数)が、iかi+1か注意すれば仕舞。 '--- #1のご回答に対し、エラーが出ました、としか言えてないレベルのようだが、上記回答に、疑問点あれば、打ち切って無視してください。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.2

>getMyDay = Left(strdate, MyPos - 1) >の部分で止まってしまいます MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも これを MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも に書き換ええてみてください。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.1

1.webクエリで表を取得 2.加工 3.別シートに複写 という処理ではなく 1.webクエリで表を取得 2.別シートに個々のセルを複写しながら加工 とした方が楽と思います。 処理後のシートの7行目までは説明がないので あてずっぽうです。 Option Explicit Sub Sample()  Dim RowCnt As Long  Dim GetSh As Worksheet  Dim PutSh As Worksheet  Dim PutRow As Long  Set GetSh = ThisWorkbook.Sheets(1)  Set PutSh = ThisWorkbook.Sheets(2)  GetSh.Rows(1).Copy PutSh.Rows(1)  GetSh.Rows(2).Copy PutSh.Rows(2)  GetSh.Rows(3).Copy PutSh.Rows(3)  GetSh.Rows(4).Copy PutSh.Rows(4)  GetSh.Rows(5).Copy PutSh.Rows(5)  PutSh.Cells(4, 3).Value = PutSh.Cells(5, 2).Value  GetSh.Rows(6).Copy PutSh.Rows(5)  GetSh.Rows(8).Copy PutSh.Rows(6)  GetSh.Rows(9).Copy PutSh.Rows(7)    RowCnt = 11  PutRow = 7  Do   If GetSh.Cells(RowCnt, 1).Value = "" Then Exit Do   PutRow = PutRow + 1   PutSh.Cells(PutRow, 1).Value = GetSh.Cells(RowCnt, 1).Value   PutSh.Cells(PutRow, 2).Value = GetSh.Cells(RowCnt, 2).Value   PutSh.Cells(PutRow, 3).Value = GetSh.Cells(RowCnt, 3).Value   PutSh.Cells(PutRow, 4).Value = GetSh.Cells(RowCnt, 5).Value   PutSh.Cells(PutRow, 5).Value = GetSh.Cells(RowCnt, 6).Value   PutSh.Cells(PutRow, 6).Value = GetSh.Cells(RowCnt + 1, 6).Value   PutSh.Cells(PutRow, 7).Value = getMyDay(GetSh.Cells(4, 2).Value)   PutSh.Cells(PutRow, 8).Value = GetSh.Cells(5, 2).Value   RowCnt = RowCnt + 3  Loop End Sub Function getMyDay(strdate As String) As String  Dim MyPos As Long  MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも  getMyDay = Left(strdate, MyPos - 1) End Function

hirorotti
質問者

補足

getMyDay = Left(strdate, MyPos - 1) の部分で止まってしまいます

関連するQ&A

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

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

  • Webクエリで困っています

    以下のマクロを作りました。Webクエリで、セルA1に入力してあるURLを読み込んで表を取り込み、必要なところを選択してコピーするようにしたいのです。しかし、実行すると上から3行目まで黄色になってエラーになります。特に3行目には矢印が表示されています。いろいろ調べましたが結局分かりませんでした。宜しくお願いします。 ------------------------------------------------------ Sub クエリで取得() ' ' クエリで取得 Macro ' マクロ記録日 : 2009/7/30 ユーザー名 : charlie ' ' With ActiveSheet.QueryTables.Add(Connection:= _ Range("A1").Value _ , Destination:=Range("A2")) .Name = "resultlist?tbws=x0p01a&hd=20090716&jcd=01_2" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = False .RefreshOnFileOpen = False .BackgroundQuery = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = True .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With Range("A19:Q54").Select Selection.Copy End Sub ----------------------------------------------------------

  • Webクエリで取得したデーターを随時別のシートにコピーできますか?

    Webクエリで為替のデーター(表)を1分おきに取得しています。 その取得した数値の中の特定のセルの数値だけを別のシートに蓄積していく事は可能でしょうか? 具体的に書きますと、Webクエリでデーターを取得する度(1分おき)に、 Sheet1の(B.8)のセルに入っている数値を、Sheet2のB列に蓄積していきたいのです。 同時にSheet2のA列にコピーした時間(何時何分)を書き込みたいです。 説明不足かもしれませんが、よろしくお願い致します。m(_ _)m

  • Excel VBAでのwebクエリ取得データの表示

    Excel VBAを使用してwebクエリでSheet1のB2セル~B3、B4、B5・・・と複数のURLからデータをループで取得し、Sheet2のA1セル~A2、A3、A4にて表示しています。 取得データの内容が3行だと仮定(あくまで仮定です)すると、通常であれば以下※1のように表示されると思います。 ※1 ━━【A】━━━━ 【1】B2セルURLの取得内容 【2】B2セルURLの取得内容 【3】B2セルURLの取得内容 【4】B3セルURLの取得内容 【5】B3セルURLの取得内容 【6】B3セルURLの取得内容 【7】B4セルURLの取得内容 【8】B4セルURLの取得内容 【9】B4セルURLの取得内容 ・      ・ ・      ・ ・      ・ ━━━━━ これを以下※2のように、取得したデータを横に表示することはできないでしょうか? ※2 ━━【A】━━━━━━━━【B】━━━━━━━━【C】━━━━ 【1】B2セルURLの取得内容 B2セルURLの取得内容 B2セルURLの取得内容 【2】B3セルURLの取得内容 B3セルURLの取得内容 B3セルURLの取得内容 【3】B4セルURLの取得内容 B4セルURLの取得内容 B4セルURLの取得内容 【4】B5セルURLの取得内容 B5セルURLの取得内容 B5セルURLの取得内容 【5】B6セルURLの取得内容 B6セルURLの取得内容 B6セルURLの取得内容 ・      ・          ・          ・ ・      ・          ・          ・ ・      ・          ・          ・ ━━━━━ 参考までに以下VBAを使用して、webクエリをループでデータ取得しています。 ━━━━━ Sub webクエリ()   Dim myQT As QueryTable   Dim i As Long   Dim myURL As String   Cells.Delete   For Each myQT In QueryTables: myQT.Delete: Next   Range("A1").Select   For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row     myURL = Sheets("Sheet1").Cells(i, "B").Value     With QueryTables _         .Add(Connection:="URL;" & myURL, Destination:=Selection)       .BackgroundQuery = False       .AdjustColumnWidth = False       .WebSelectionType = xlEntirePage       .WebFormatting = xlWebFormattingNone       .WebTables = "2"       .Refresh BackgroundQuery:=False     End With     Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select   Next End Sub ━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • 表の横の列を取得

    エクセルで表の欄外の、表の横の列を取得する、 というBVAはあるのでしょうか。 具体的に列のAとかBを指定するコード?は あると思うのですが、表の欄外の横の列に合計を表示させたい、 となった場合を考えています。 たとえば表がA1~C5という場合もあると思いますし 表がA2~D6という場合もあると思うので、臨機応変に 欄外に合計額を表示させたいと思っていました。 そうでなければ、都度、表の場所などが変わるごとに VBAを書き換える必要が出てくると思うのです・・・。

  • Excel VBAにて特定のサイトからのWebクエリ取得に失敗します。

    こんにちは。 現在、http://www.oanda.com/convert/fxhistory というサイトから為替レートを取得してチャートを 自動作成するマクロを使っているのですが、 2,3日前からWebクエリの取得に失敗するようになりました。 (ソース引用)---------------------------------------     With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" + url _ , Destination:=Range("A1")) RefreshStyle = xlOverwriteCells .AdjustColumnWidth = False .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "5" .Refresh BackgroundQuery:=False End With (ソース引用 終)------------------------------------ .Refresh~の部分で --------------------------------------------- 実行時エラー 1004 ファイルにアクセスできませんでした。次のいずれかを行ってみてください。 ?指定したフォルダがあるか ?読み取り専用になっていないか ?次の文字が含まれていないか<>?[]:|* ?ファイル名、パス名が半角218文字より長くないか --------------------------------------------- (?以降のエラーメッセージは編集していますが、このような内容です) というエラーが出ます。 しかも 自宅の環境(WinXP Pro SP2,Office2003)ではエラーが出て 会社の環境(Win2000,Office2000)では問題なく動いたりします。 あと、マクロからではなく、 エクセル上から直接「データ→外部データの取り込み」で 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& 文字化けはエンコード表示で見られるような\記号などが入り混じったものです。 また同じ手順で取得しなおしてみるとうまくいくときもあります。 最近文字化けする頻度が多いため投稿した次第です。 エクセル側で制御する等、なにか対処方法はあるのでしょうか? 回答よろしくお願いします。

  • エクセルWEBクエリで毎回変わるURLに対応したい

    中央競馬の結果成績をWEBクエリで自動取得したいと思ったのですが、URLの一部が毎回変わります。 日付、開催場、第何回か、何一目か、これらの要素で変化します。 それを認識して設定した通りに取得したいのです。 現在、日付ごとに競馬のデータを1つのBookとして保存しています。 各レース別にシートを分けています。 最大3場開催なので、36シートあります。 例えば2008年8月24日のBOOKに、2008年8月24日第3回新潟4日目の3レースの結果を、 シート3の指定のセル(A30)にテキスト形式で貼り付けます。 つまり各レースの結果をそれぞれのレース別に分けたシートの指定のセルに貼り付けるということを、自動取得で出来ないでしょうか? 結果はYAHOO競馬でも良いのですが、 こちらのサイトの方がシンプルなのでこれを使ってみました。 http://www.keibabook.co.jp/homepage/freeraceinfo/tojitu/sokuhoinfo.aspx?subsystem=0 2008年8月24日第3回新潟4日目ならこちら http://www.keibabook.co.jp/homepage/freeraceinfo/tojitu/sokuhoinfo2.aspx?subsystem=0&negahi=20080824&kai=03&basyocd=07&kaisai=04 URLのkai=03&basyocd=07&kaisai=04の部分が第3回(03)新潟(07)4日目(04)になっています。 当日の開催中は徐々に行数が増えていきますので、まだ表示されていないレースの行を指定できませんでした。 また、結果で同着が起きた場合、そのレースだけ行数が増えます。 そんな時はこのような表示になります。 http://www.keibabook.co.jp/homepage/freeraceinfo/tojitu/sokuhoinfo2.aspx?subsystem=0&negahi=20080817&kai=03&basyocd=07&kaisai=02 理想としてはその日の名前を(2008年8月24日第3回新潟4日目)をどこかのセルに入れたら、 それを認識してその日の結果のページにデータを取得しに行く事が出来れば良いのです。(入力は各開催場で1回のみ) 自分なりに考えてやってみた事は、日付別のBOOKとは別に結果取得用のBOOKを作り、 それのシート1~3にそれぞれの開催場の結果をリアルタイムに取得できるようにしました。 本日の場合なら、シート1新潟、シート2小倉、シート3札幌という風にです WEBクエリで取得に指定した範囲は各開催場の結果全体です。 これで結果が更新される度に表示されました。(5分間隔設定) それを日付別のBOOKからマクロで結果取得用のBOOKに取得しに行く事にしましたが、 結果が同着になると行がずれてくるためにコピーしてきたものが目的の内容とは違う行になってしまいました。 また毎回その日のURLでWEBクエリを設定する必要があります。 何か良い方法を教えてください。 マクロで出来るならそのマクロコードを教えてください。 マクロコードにはどんな動作をさせてるコードなのかも書いて頂けるとありがたいです。 宜しくお願いします。

  • エクセルVBAとWEBクエリに関する質問です

    まったくの初心者ですが、エクセルのVBAとWebクエリを駆使して、 大量(1000強)のWebページから商品情報を エクセルへ入力していくプログラムを作成したいと考えています。 やりたいことは (1)エクセルのA列にurlを1000個並べ (2)プログラムを実行すると、上から順にurlへ自動でアクセス (3)各ページの商品情報を取得(テーブルデータ)し、エクセルに入力していく 例)B列:商品名、C列:商品番号、D列:通常価格、E列:カラー展開、F列:サイズ展開 という具合に、次々と自動で商品情報を入力していくプログラムです。 エクセルのVBAとWebクエリを活用して以上のようなことをするのは可能でしょうか? VBAにてLinkの取得や、Webクエリにてテーブルデータの取得ができるのは わかったのですが、自動でアクセスして、表ではなく区切り線ごとにデータを並べたいのです。 もし可能でしたらどのようにすれば可能になるか教えていただけないでしょうか。 不可能だとした場合は、何か可能になる方法をご教唆いただけないでしょうか。 お手数ですが、ご回答よろしくお願いいたします。

  • クエリ教えてください。

    SQLSERVER2005 現在開発の中でデータの抽出について悩んでいます。 どなたかご教授お願いします。 <TBLa> コード A   B 001   2008  12 (1) 001   2009  01 001   2009  02 <TBLb> コード 年   月 001   2009  01 001   2009  02 抽出したいのは(1)のデータ。 <TBLa>のコード、A、Bが<TBLb>コード、年、月にHITしないデータです。 クエリで抽出する方法をお願いします。

専門家に質問してみよう