Webクエリを使って、「Yahooファイナンス」から日経平均株価の時系列データを取得したいのですが、うまくいきません。(TT)
下記に全コードを記載しますので、ご回答よろしくお願いします。
Dim url 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_s = 1 '取得開始月
year_s = 2005 '取得開始年
'価格データを取得
For i = 0 To 365 * 0.65 Step 50
'変数にURLを代入
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"
'1回目の繰り返しの場合
If i = 0 Then
lastrow = "4"
Call Get_Data
'価格データが取得できなかった場合、マクロを終了させる
If Range("B4") = "" Then
Exit Sub
End If
'2回目以降の繰り返しの場合
Else
lastrow = Range("B4").End(xlDown).Row + 1
Call Get_Data
'見出しのセルを削除
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
End Sub
Sub Get_Data()
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 = "22"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Range("B5:F54").Select
Selection.Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
Calcマクロを実行すると、
「実行時エラー"1004"ファイルにアクセスできませんでした。次のいずれかを行ってください。」 というエラーが出て止まってしまいます。
デバッグをすると、「Get_Dataマクロ」内の、
.Refresh BackgroundQuery:=False が黄色になります。
ステップインしても、やっぱり、
.Refresh BackgroundQuery:=False の所でエラーが出ます。(TT)
どうしても解決したい内容なので、
少しでも「解決の可能性」があれば、なんでも試してみたいと思っていますので、どうぞお気軽に回答お願いします。
力を貸しください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
試したところ、ちゃんと動作しましたのでコードの問題ではないでしょう。
で、検索したところ同じような質問があり、
インターネット一時ファイル、履歴を削除したら解決したようです。
下記URLを覗いてみてください。
http://okwave.jp/qa2884378.html
外しましたらご容赦願います。
onlyromさん、ご回答ありがとうございます。
ご紹介いただいたURLを参考に、
一時ファイル、履歴を削除したら正常に動作しました。(^^)/
本当に感謝です。ありがとうございました。
自分なりに調べた結果、
Internet Explorer 7をインストールすると、Webクエリの動作が不安定になり、インターネットからの株価取得マクロが正常に動かなくなることがあるようです。
ぼくは、vistaなので、IE6に戻すこともできず、
XPにするしかないのかなぁと、頭を抱えていました。(TT)
onlyromさんのおかげで、迅速に悩みを解決することができました。
本当にありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルマクロでエラーの原因がわかりません。
Visual Basic(VBA)
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
-
4
Excel ファイルに保存すると実行時エラーになる
Visual Basic(VBA)
-
5
Refreshで落ちる
Visual Basic(VBA)
-
6
Excelを開くとエラーが出る
Excel(エクセル)
-
7
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
8
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
11
エクセルVBAでパスの¥マークについて
Access(アクセス)
-
12
【ExcelVBA】指定の書式で、マクロなしブックとしてAlertなしで別名保存する方法
Visual Basic(VBA)
-
13
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
Yahoo! JAPANのID取得について
-
VB.NETで DataRow()を利用して...
-
ディスプレイの表示可能な解像...
-
VBA:小数点以下の数字を取得で...
-
C言語におけるコンピュータ名・...
-
データ数をカウントしたいのですが
-
年月日時分秒の変数を教えて下さい
-
ListView 項目の選択/選択解除...
-
エクセルVBAで複数選択できるよ...
-
エクセルVBAで別ファイルのデー...
-
時間を分に変換するプログラム
-
UWSCでhtmlソースの文字列を取...
-
COMポート 名前を取得する方法
-
Flexgridで選択行の列の値を取...
-
like演算子内に変数って使えな...
-
ASP.NETでIPアドレスログイン管...
-
ActiveWorkbook.Path取得できない
-
利用者側のMACアドレスを取得し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
JavaScriptでWindowsログオンID...
-
利用者側のMACアドレスを取得し...
-
郵便番号検索APIにてget Elemen...
-
COMポート 名前を取得する方法
-
コンボボックス表示文字列を取...
-
VBA Shapesの座標からセル位置...
-
Spreadの選択行の取得について
-
VBScriptで数値にコンマを付け...
-
C言語におけるコンピュータ名・...
-
Excel VBA でログインしてい...
おすすめ情報