実行時エラー'1004': アプリケーション定義またはオブジェクト定義について
Dim code As String
Dim lastrow As Integer
Dim i 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_ = 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
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Subになります。Excel2007です。
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)
ありがとうございました。解決しました。著書のホームページを検索してみたところ、がっつり正誤表が記載されておりました。やれやれです。ありがとうございました。
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
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
この回答への補足
ご教授ありがとうございます。今やってみたところ変わらず同じ場所がエラーです。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
Excel Webクエリ
-
パレート図等で「N=100」とあ...
-
高速フーリエ変換でデータ数が...
-
PCの内蔵メモリにデータは残る?
-
XMLデータってなんですか?
-
ネットカフェから、メールでき...
-
プログレッシブとインターレー...
-
職務質問で聞かれたデータはど...
-
差し込み印刷がうまくできません
-
データのレプリカってなんですか?
-
フーリエ変換のデータの補間に...
-
Ymobile!データ増量オプション...
-
Word2010 差し込み印刷のExcel...
-
ワードの差し込み印刷のデータ...
-
日本通信の当月利用データ量は...
-
Excelの“並び替え”で文字コード...
-
実行時エラー'1004': アプリケ...
-
ガラケーの電話帳を印刷したい...
-
Excel グラフで数値の正と負の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
日本通信の当月利用データ量は...
-
ネットカフェから、メールでき...
-
XMLデータってなんですか?
-
PCの内蔵メモリにデータは残る?
-
高速フーリエ変換でデータ数が...
-
パレート図等で「N=100」とあ...
-
スマホを2台持ってる方をたまに...
-
ZOOMが今後中国にデータを流す...
-
5Gスタンドアローンって、オ...
-
データのレプリカってなんですか?
-
エクセルのグラフのデータ系列...
-
シミュレーション仮説は、仮説...
-
Excel Webクエリ
-
Excelの“並び替え”で文字コード...
-
データ用HDDの別のPCへの乗せ替え
-
Excel ドロップダウンリスト(入...
-
格安simをiPhoneとiPadで共有す...
-
ワードの差し込み印刷のデータ...
-
SSDのフオーマットについて
おすすめ情報