1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

엑셀파일 다운 받기 : abyul.com_펀드가조회.xls

출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=LLN0OIbwDReB6HorhU5nc2hGuQ00oANh

 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오려고 합니다.
beylim 2008.04.13 00:56 

엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오려고 합니다. 다음 펀드 사이트를 이용하려하는데요 기준가조회를 하면 기준가 조회기간이 1개월로 나오더라고요. 여기까지는 기준가 데이터를 불러오는게 아무이상이 없는데, 이 페이지에서 기간을 12개월로 변경한 후 읽어오려하면 불러오지를 못하더라고요. 혹시 이 문제를 해결해주실 분 계신가요?



 re: 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오려고 합니다.
abyul 답변채택률  66.7%
2008.04.13 01:59   

다음펀드에서 기준가 조회시, 기본 옵션이 한달로 되어 있는데요..

<아래 내용은 홈페이지 제작에 대한 지식이 필요한 부분입니다. 잘 모르신다면 넘어가도 됩니다.>
12개월로 조회하려고 하면, 우선 기존 입력 폼에 해당 년월일을 입력시키고, form에서 Finfo_gijunga.asp 파일에 해당 변수들을 post해서 값을 불러들이드라구요..
서버 자체적으로 12개월이라는 지정된 페이지가 있어서 해당 변수를 따로 지정해주지 않아도 해당하는 페이지 구성이 가능하다면 좋겠지만.. 12개월로 검색 조건이 지정된 페이지가 없으므로, 땜빵으로 해당 asp에 조회를 원하는 변수명을 직접 전달할 수 밖에 없습니다.
<홈페이지 제작에 관한 지식이 필요한 부분 끝.>

암튼.. 결론은..
웹쿼리 만드실때.. 아래 주소를 응용해서 웹쿼리 하나 만드시구요..
(아래 주소는 2007.4.11 ~ 2008.4.11까지의 기준가가 조회되도록 만들어진 페이지 주소입니다.
님이 사용하시는 펀드가 먼지 몰라서 한국삼성그룹적립식주식 1Class A펀드의 기준가를 조회해봤습니다.
님이 관리하시는 펀드의 조회화면의 URL을 확인해보세요. FCD라는 변수만 해당 펀드로 변경해주시면 될 것 같습니다.)
http://fund.finance.daum.net/zeroin/app/Finfo_gijunga.asp?FCD=FfkvA2OCvgl1N1uLS1Mk3Ug3SL5Qt2a0u5c2&FCD1=&subMenuIdx=21&from_year=2007&from_month=04&from_day=11&to_year=2008&to_month=04&to_day=11
업데이트가 필요할 때마다, 쿼리편집 누르시고, 해당 쿼리에서 from_year, from_month, from_day, to_year, to_month, to_day를 수정해서 사용하시면 됩니다.
해당 사이트에 접속해서 데이터를 마우스로 긁고, 엑셀에서 정리해주는 것보다는 그나마 좀 더 편하지 않을까하는 생각입니다.
능력이 되시면 매크로로 만들어서 자동으로 해당 쿼리를 업데이트 시키는 함수를 하나 만들어서 버튼 하나로 업데이트 가능하도록 만드는 것도 좋은 방법이겠네요.
그럼.. 수고하세요.

참고로.. 매크로에 관련된 팁을 드린다면..
기본적으로 웹쿼리를 업데이트시킬때 만들어지는 쿼리는 아래와 같습니다.

    Range("F11").Select
    With Selection.QueryTable
        .Connection = _
        "URL;http://fund.finance.daum.net/zeroin/app/Finfo_gijunga.asp?FCD=FfkvA2OCvgl1N1uLS1Mk3Ug3SL5Qt2a0u5c2&FCD1=&subMenuIdx=21&from_year=2007&from_month=10&from_day=11&to_year=2008&to_month=04&to_day=11"
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "12"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

저 위에 .Connection이라는 속성값을 그날 날짜에 맞춰서 변경시켜주면 되는데요..
now()와 date 데이터의 가공으로 1년전부터 1년 후로 from_year, to_yaer 등을 변경할 수 있을 것 같습니다.



 위의 답변을 참고해서 오늘날짜를 이용해서 긁어오는 매크로작성입니다
cyrano81621 답변채택률  0%
2008.04.25 15:09  
실행해보니 되기는 하는데 2008년도꺼밖에 안나오드라고요
전 홈피 구조에 대한 지식이 없어서...
혹 년도별로 다른페이지에서 데이터가 관리되는게 아닌지..
또 오늘날짜가 아닌 다른날짜로 바꿔봐도 여전히 오늘날짜부터 1월1일까지 출력되네요
머.. 미완이지만 자동으로 연초부터 오늘까지 날짜의 펀드기준가를 알수있으니... 된건가....?
D5=year(now()),  E5 = month(now()),  F5= day(now())
각셀에 다음과 같이 입력하시고 매크로 돌리면 A6 셀부터 출력됩니다
PS. 위에 답변올리신분... 해결방법좀.... 추가로부탁드립니다.

다음은 매크로 내용입니다. 걍 긁어서 붙이세요

Sub 펀드기준가조회()
'
' 펀드기준가조회 Macro
'

'날짜설정
Dim year As Integer
Dim month As Integer
Dim day As Integer
year = Cells(5, 4)
month = Cells(5, 5)
day = Cells(5, 6)

'이전내용을 지웁니다
Range("a6:h300").Select
    Selection.Delete Shift:=xlToLeft

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://fund.finance.daum.net/zeroin/app/Finfo_gijunga.asp?FCD=hNC4B3Tw7Y02ocq6E0oCmBI26rvHp4J7Lsf1&FCD1=&subMenuIdx=21&" _
        & "from_year=" & year - 1 & "&from_month=" & month & "&from_day=" & day & "" _
        & "to_year=" & year & "&to_month=" & month & "&to_day=" & day _
        , Destination:=Range("A6"))
        .Name = _
        "미래에셋BRICs업종대표주식형자1C-A=FCD=hNC4B3Tw7Y02ocq6E0oCmBI26rvHp4J7Lsf1&FCD1=&subMenuIdx="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "12"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub





위에 분께서 훌륭하게 만들어주셨군요.
해당 매크로가 원하는데로 작동하지 않는 이유는, 
  첫번째로, 주소 부분에서 from_year앞에 &가 빠졌습니다. 아래 빨간 색의 &를 기존 소스에서 추가해주셔야합니다.
         "URL;http://fund.finance.daum.net/zeroin/app/Finfo_gijunga.asp?FCD=hNC4B3Tw7Y02ocq6E0oCmBI26rvHp4J7Lsf1&FCD1=&subMenuIdx=21&" _
        & "from_year=" & year - 1 & "&from_month=" & month & "&from_day=" & day & "&" _
        & "to_year=" & year & "&to_month=" & month & "&to_day=" & day _


  두번째로, 월과 일의 데이터 포멧이 틀려서입니다.
  1자리 월도 2자리로 표현되어야하지요. 4월이 아니고 04월입니다. 
  포멧함수를 사용해서 수정할 수 있습니다.
year = Format(Cells(5, 4), "0000")
month = Format(Cells(5, 5), "00")
day = Format(Cells(5, 6), "00")

   이때, 앞에서 integer로 선언한 것을 string으로 변경해줘야하구요.
Dim year As String
Dim month As String
Dim day As String




긁어서 바로 적용할 수 있는 수정된 매크로는 아래와 같습니다.
Sub 펀드기준가조회2()
'
' 펀드기준가조회 Macro
'

'날짜설정
Dim year As String
Dim month As String
Dim day As String

year = Format(Cells(5, 4), "0000")
month = Format(Cells(5, 5), "00")
day = Format(Cells(5, 6), "00")

'이전내용을 지웁니다
Range("a6:h300").Select
    Selection.Delete Shift:=xlToLeft

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://fund.finance.daum.net/zeroin/app/Finfo_gijunga.asp?FCD=hNC4B3Tw7Y02ocq6E0oCmBI26rvHp4J7Lsf1&FCD1=&subMenuIdx=21&" _
        & "from_year=" & year - 1 & "&from_month=" & month & "&from_day=" & day & "&" _
        & "to_year=" & year & "&to_month=" & month & "&to_day=" & day _
        , Destination:=Range("A6"))
        .Name = _
        "미래에셋BRICs업종대표주식형자1C-A=FCD=hNC4B3Tw7Y02ocq6E0oCmBI26rvHp4J7Lsf1&FCD1=&subMenuIdx="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "12"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub



참고로.. 별도의 날짜 지정 없이,  오늘 날짜를 기준으로 1년 단위로 검색하시려면 변수값을 아래처럼 지정해주면 됩니다.
year = Format(Date, "yyyy")
month = Format(Date, "mm")
day = Format(Date, "dd")

역기서 Date는 오늘 날짜를 의미합니다.



문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 33940
44 기타 엑셀 기본 제공 대화 상자 인수 목록 file [레벨:30]아별 2009-11-04 8018
43 엑셀2007에서 셀의 색상을 RGB로 뽑아내기 file [레벨:30]아별 2009-10-06 10229
42 [VBA팁] 화일이 존재하는지 확인하기 [레벨:30]아별 2009-07-31 8031
41 엑셀에서 사용하는 언어 확인하기. file [1] [레벨:30]아별 2009-06-03 13807
40 메시지 박스 대용으로 Shape 사용하기 file [레벨:30]아별 2009-05-07 16070
39 유저폼 크기 조절 가능하게 만들기 file [레벨:30]아별 2009-05-07 5845
38 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 5609
37 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5823
36 [펌] Excel Macro(VBA) 입문자를 위한 소개자료 image [레벨:30]아별 2008-12-19 6655
35 기타 [Excel VBA] 피벗테이블(PivotTable)을 VBA로 컨트롤해보자.. [레벨:30]아별 2008-12-19 12163
34 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 5283
33 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 5494
32 [엑셀VBA] ERROR CODE file [레벨:30]아별 2008-08-28 7384
31 [엑셀VBA] 자동필터를 매크로로 구현하기 [레벨:30]아별 2008-08-28 11256
30 [VBA] 전역변수 설정하기. Public 문, Private 문 imagefile [레벨:30]아별 2008-07-01 14070
» [엑셀VBA] 네이버 지식인 답변 _ 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오기. file [레벨:30]아별 2008-04-30 9150
28 엑셀 추가 기능 만들기 [레벨:30]a☆ 2006-01-19 7347
27 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 5410
26 시트에서 콤보박스 활용하기 file [레벨:30]a☆ 2005-11-12 16749