으로 처음으로 여기에 전기하는 방법으로 yahoo finance 기록 데이터를 추출 할 수 있습니까? 다음 문제에 도움이 필요합니다.Excel VBA : 정의 된 날짜 범위에
Excel VBA의 yahoo finance 웹 사이트 URL에서 과거 가격을 추출 중입니다. 티커, 시작 날짜 및 종료 날짜에 대한 변수 셀이 있습니다. 나는 나의 데이터를 얻기 위해 그 세포의 가치를 취하기 위해 URL을 변환했다.
문제점 : 매크로는 "시세"변수 셀에서 데이터를 추출하지만 "시작/종료 날짜"변수 셀에 정의한 날짜 범위를 제공하지 않습니다. 대신 전체 역사적인 데이터를 제공합니다.
원래 링크
http://chart.finance.yahoo.com/table.csv?s=NVDA&a=3&b=15&c=2012&d=3&e=15&f=2017&g=m&ignore=.csv
변환 링크
http://chart.finance.yahoo.com/table.csv?s= " & Tick1 & " &a= " & smonth & " &b= " & sday & " &c= " & syear & " &d= " & emonth & " &e= " & eday & " &f= " & eyear & " &g=m&ignore=.csv
Sub book1()
'Macro Sheet 1
'Variables
Dim Tick1 As String
Dim Tick2 As String
Dim Tick3 As String
Dim sday As Long
Dim smonth As Long
Dim syear As Long
Dim eday As Long
Dim emonth As Long
Dim eyear As Long
Dim newsheet As Object
'Delete content
With Sheets("Sheet1")
.Range("A12:D200").Clear
End With
'Variable cells
Tick1 = Range("b1")
Tick2 = Range("c1")
Tick3 = Range("d1")
sday = Day(Range("b2"))
smonth = Month(Range("b2")) - 1
syear = Year(Range("b2"))
eday = Day(Range("b3"))
emonth = Month(Range("b3")) - 1
eyear = Year(Range("b3"))
'Extract data
'Ticker 1
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://chart.finance.yahoo.com/table.csv?s= " & Tick1 & " &a= " & smonth & " &b= " & sday & " &c= " & syear & " &d= " & emonth & " &e= " & eday & " &f= " & eyear & " &g=m&ignore=.csv", _
Destination:=Range("$A$12"))
.Name = Tick1
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
'.RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'Ticker 2
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://chart.finance.yahoo.com/table.csv?s= " & Tick2 & " &a= " & smonth & " &b= " & sday & " &c= " & syear & " &d= " & emonth & " &e= " & eday & " &f= " & eyear & " &g=m&ignore=.csv", _
Destination:=Range("$C$12"))
.Name = Tick2
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
'.RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'Ticker 3
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://chart.finance.yahoo.com/table.csv?s= " & Tick3 & " &a= " & smonth & " &b= " & sday & " &c= " & syear & " &d= " & emonth & " &e= " & eday & " &f= " & eyear & " &g=m&ignore=.csv", _
Destination:=Range("$D$12"))
.Name = Tick3
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
'.RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
With Sheets("Sheet1")
.Rows(62 & ":" & .Rows.Count).Delete
End With
'Copy on newsheet
Set newsheet = ThisWorkbook.Sheets.Add
newsheet.Name = "Copie"
ThisWorkbook.Sheets("Sheet1").Range("A12:D62").Copy
ThisWorkbook.Sheets("Copie").Range("A1").Select
ThisWorkbook.Sheets("Copie").Paste
End With
End Sub
B2 및 B3 셀 서식을 지정할 수 있습니다. 이 셀이 '일반'이고 입력 한 문자열이 mm/dd/yyyy이면 작동해야합니다. 또한 excel은 'xlOverwriteDeleteCells'가 정의되어 있지 않다는 것을 말합니다. – Amorpheuses
날짜 셀 서식이 mm/dd/yyyy로되어 있고 여전히 작동하지 않습니다. 또한 전체 프로그램을 포함하도록 내 게시물을 편집했습니다. 죄송합니다. –
왜 두 URL에 별표가 포함되어 있습니까? 그것들과 공백을 제거하면 첫 번째 링크가 잘 렌더링됩니다. – Parfait