
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルマクロでエラーの原因がわかりません。
Visual Basic(VBA)
-
Excelを開くとエラーが出る
Excel(エクセル)
-
EXCEL2010で名前を付けて保存の時に「ファイルにアクセスできませんでした」エラーが出ます
PowerPoint(パワーポイント)
-
-
4
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
5
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
6
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
7
Excel ファイルに保存すると実行時エラーになる
Visual Basic(VBA)
-
8
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
【VBA】ワークブックを開く時にエラーが出る場合と出ない場合の違いは?
Excel(エクセル)
-
11
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
12
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
13
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
Flexgridで選択行の列の値を取...
-
count(*)で取得した値をJAVAの...
-
DOS窓の非表示
-
VB.NETでルータのグローバルIP...
-
ListView 項目の選択/選択解除...
-
PostgresSQL JDBC で Select結...
-
JAVAでWindowsのアカウント名を...
-
「Excel VBA」 Webクエリ マク...
-
郵便番号検索APIにてget Elemen...
-
データ数をカウントしたいのですが
-
ドロップダウンリストの初期表...
-
getParameter と getAttribut...
-
VBscriptでinnerHTMLを変数に取...
-
Excel VBA でログインしてい...
-
ASP(vbscript)におけるクライア...
-
JavaScriptでWindowsログオンID...
-
PHP8でWarning:Undefined varia...
-
NTPサーバから時刻を取得する
-
VBAでActiveDirectoryのユーザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
PHP8でWarning:Undefined varia...
-
count(*)で取得した値をJAVAの...
-
ListView 項目の選択/選択解除...
-
VBAでActiveDirectoryのユーザ...
-
VBA:小数点以下の数字を取得で...
-
JSP+Servletでのページングの常識
-
データ数をカウントしたいのですが
-
Flexgridで選択行の列の値を取...
-
利用者側のMACアドレスを取得し...
-
getParameter と getAttribut...
-
like演算子内に変数って使えな...
-
JavaScriptにおいてコンピュー...
-
郵便番号検索APIにてget Elemen...
-
DataGridView 複数選択で行番...
-
URIでのページの移動について
-
Spreadの選択行の取得について
-
指定のURLのタイトルを取得...
-
EXCELのリストボックスを選択し...
-
ListViewで複数選択された項目...
おすすめ情報