• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自動Web取込み)

自動Web取込み方法についての質問

このQ&Aのポイント
  • Excel VBAを使用して、指定したURLからのデータを自動的に取り込む方法について質問があります。
  • 具体的には、ゆうパックの都道府県別の運賃表のデータを取り込む際に、各県ごとに異なるURLを参照したいと思っています。
  • 現在のコードでは、URLを指定してデータを取り込むことはできていますが、URLの変更がうまく行われず、取り込むデータが同じURLからしか取得されません。

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

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

Sheet1のB3に http://www.post.japanpost.jp/service/you_pack/charge/ichiran/01.html を入れる。 下方向に複写する。 ーーー テストを簡単にするため3-9行を処理してますが、47都道府県繰り返してください。 MsgBox myAddressとMsgBox dは本筋と関係ないので、そのうち削除しても差し支えない。 MsgBox "aaa"は時間稼ぎをしているつもりだが、検討はずれかもしてない。はずしてやってみてください。 For Each h In ActiveSheet.Hyperlinks・・・の部分は意味が理解できなくて、そのままにしています。 ーーーー 標準モジュールに Sub test01() Dim h As Hyperlink For Each h In ActiveSheet.Hyperlinks MsgBox h.Address h.Range.Offset(0, 1) = h.Address Next '-- Dim i As Long Dim myAddress As String d = 53 For i = 3 To 9 MsgBox d myAddress = Range("B" & i).Value MsgBox myAddress With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & myAddress, Destination:=Range("B" & d + 1)) .Name = "01" .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 = "1" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With MsgBox "aaa" '-- d = Range("B65536").End(xlUp).Row Next i End Sub ーー これを実行すると、53行目から、北海道、青森・・・福島までの表(For Nextを9で止めているため途中まで)がコピーされました。 やってみてください。 .Refresh BackgroundQuery:=False辺りが怪しいのですが、WEB上に記事があって、IE履歴、一時ファイルを削除してやりました。ここでトラぶったら Googleで「Refresh BackgroundQuery:=False」で照会のこと。記事があり参考にすること。 ーー 結局 d = Range("B65536").End(xlUp).RowでDestinationを変化させられなかったための質問かな?

maki6006
質問者

お礼

大変失礼を致しました。 空白行が入ってもRange("B65536").End(xlUp).Rowにより最終行は拾えておりました。 お世話になり 問題解決です。

maki6006
質問者

補足

回答有難う御座います。 特に問題なくVBA作動致しました。 Web取得先データが空白行付きの場合にうまく拾ってくれません。 取得先データ 111111111111 33333333113333 となっている場合 dはどのようにすると良いでしょうか。 再度 お手数をお掛け致します。

関連するQ&A