• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:実行時エラー'1004': アプリケーション定義またはオブジェクト定義)

実行時エラー'1004': アプリケーション定義またはオブジェクト定

このQ&Aのポイント
  • 実行時エラー'1004': アプリケーション定義またはオブジェクト定義について
  • Excel 2007のVBAコードで発生する実行時エラー'1004': アプリケーション定義またはオブジェクト定義について解説します。
  • Excel 2007でVBAコードを実行中に発生するエラー'1004': アプリケーション定義またはオブジェクト定義について、その原因と対処法について説明します。

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

多分、変数の定義がきちんとできていないと思います。 「Sub calc()」で  URL = "URL;http://table.yahoo.co.jp/t?s="………  を設定していますが、 「Sub GETデータ」では  ActiveSheet.QueryTables.Add(Connection:=URL……… URL変数はどこにも定義していませんので、どちらのサブルーチンも個別の変数(ローカル変数) になっています。 よって「Sub GETデータ」のURLは空文字のままです。   もしURLをモジュール変数かパブリック変数またはURLを受け渡せば良いかと思います。 【モジュール変数なら】   Dim i As Integer   Dim URL As String    ←追加   Sub calc() 【パブリック変数なら】   Dim i As Integer   Public URL As String    ←追加   Sub calc() 【変数の受け渡し】   Call GETデータ(URL)      :      :   Sub GETデータ(URL)

howai
質問者

お礼

ありがとうございました。解決しました。著書のホームページを検索してみたところ、がっつり正誤表が記載されておりました。やれやれです。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

訂正する部分としては、上から順です。 '// Dim lastrow As Integer   ↓ Dim lastrow As Long  '任意です。 '// Call GETデータ   ↓ Call GETデータ(URL, lastrow) '// Sub GETデータ()   ↓ Sub GETデータ(ByVal URL, ByVal lastrow As Long) '//  .Refresh BackgroundQuery:=False  End With End Sub   ↓  .Refresh BackgroundQuery:=False  End With  ActiveSheet.QueryTables(1).Delete '任意です。 End Sub

howai
質問者

お礼

ありがとうございます。解決しました。

  • mo2yakko
  • ベストアンサー率54% (30/55)
回答No.1

私のはEXCEL2003なのでよく判りませんが URLという変数はどこで宣言していますか? していない場合、ローカル変数と判断されているため GETデータで使用している変数URLがNULL(空白文字) になっているんじゃないでしょうか? Option Explicitを付けて、デバッグしてみましょう。 Option Explicit '追加 Dim URL As String '追加 Dim code As String Dim lastrow As Integer Dim i As Integer Sub calc() : : End Sub

howai
質問者

補足

ご教授ありがとうございます。今やってみたところ変わらず同じ場所がエラーです。 Dim i As Long Dim URL As String Dim code As String Option Explicit Dim lastrow As Integer Sub calc() Dim code As String Dim day_s As Integer, month_s As Integer, year_s As Integer Dim day_e As Integer, month_e As Integer, year_e As Integer Dim row_length As Integer code = "998407.o" day_e = 31 month_e = 12 year_e = 2005 day_s = 1 month_s = 1 year_s = 2005 Range("B4:H65536").ClearContents For i = 0 To 365 * 0.65 Step 50 URL = "URL;http://table.yahoo.co.jp/t?s=" & code & "&a=" & month_s & "&b=" & day_s & "&c=" & year_s & "&d=" & month_e & "&e=" & day_e & "&f=" & year_e & "&g=d&q=t&y=" & i & "&z=" & code & "&x=.csv" If i = 0 Then lastrow = 4 Call GETデータ If Range("B4") = "" Then Exit Sub End If Else lastrow = Range("B4").End(xlDown).Row + 1 Call GETデータ Range("B" & lastrow, "H" & lastrow).Delete row_length = Range("B4").End(xlDown).Row If row_length - lastrow < 49 Then Exit For End If End If Next Range("B5:H65536").Sort key1:=Columns("B") lastrow = Range("B4").End(xlDown).Row Range("B5", "B" & lastrow).NumberFormatLocal = "yyyy/mm/dd" Range("A1").Select End Sub で Sub GETデータ() With ActiveSheet.QueryTables.Add(Connection:=URL, Destination:=Cells(lastrow, 2)) .Name = "t?s=998407.o&g=d" .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 = "10" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .Refresh BackgroundQuery:=False      End With        End Sub 何か間違っているところはありますでしょうか?初心者で困り果てています。

関連するQ&A