実行時エラー'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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
Refreshで落ちる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
エクセルで縦に並んだデータを...
-
XMLデータってなんですか?
-
インスタの設定について。 イン...
-
【MSOffice Publisher2010差し...
-
Excelの“並び替え”で文字コード...
-
高速フーリエ変換でデータ数が...
-
下記マクロでMsgBox "空白です...
-
格安simをiPhoneとiPadで共有す...
-
シリアルRS-232出力機器からの...
-
窓関数(方形窓)について
-
差し込み印刷がうまくできません
-
FAXの表をエクセルに変換したい
-
白黒写真を黒いドットの正円で...
-
ワードの差し込み印刷のデータ...
-
電子辞書の画面をPCに映すには
-
こんなときは常用対数?それと...
-
自然対数に変換する意味がわか...
-
FFTにおけるゼロ追加、補間や分...
-
パレート図等で「N=100」とあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
インスタの設定について。 イン...
-
XMLデータってなんですか?
-
高速フーリエ変換でデータ数が...
-
エクセルで縦に並んだデータを...
-
ネットカフェから、メールでき...
-
PCの内蔵メモリにデータは残る?
-
【MSOffice Publisher2010差し...
-
データ用HDDの別のPCへの乗せ替え
-
パレート図等で「N=100」とあ...
-
日本通信の当月利用データ量は...
-
エクセルのグラフのデータ系列...
-
共通テストボーダーについて、...
-
Excel Webクエリ
-
d’の求め方
-
Excelの“並び替え”で文字コード...
-
ワードの差し込み印刷のデータ...
-
表計算: 多次元の表を作りたい
-
CSVファイルを・…
-
相関行列作成時の数字以外のデ...
おすすめ情報