날씨정보 추출
아래 코드는 다음의 날씨 정보를 편하게 추출하는 VBA 코드입니다.
http://weather.media.daum.net/ 접속하여 아래처럼 합니다.
엑셀 시트에 붙여넣기를 합니다.
테스트해보니 한가지 버그사항은 날짜를 가져오는데 년도를 올해 연도로 잘못인식하는 증상이 있네요..
위 그림에 보면 날짜는 있고 연도는 없다보니 연도를 올해 연도로 인식해서 그냥 붙여버리는 증상이 있다는 겁니다. 그점을 감안하여 추출한 다음에 연도는 수정을 해주는게 필요합니다.
첨부한 엑셀파일에 필요한 VBA Code 는 다 들어 있습니다.
테스트를 해보니 익스플로러와 크롬 브라우저, Firefox 브라우저가 인식하는 값이 다른 거 같네요..
그래서 두가지 버전으로 별도로 올립니다.
Sub 날씨정보추출()
Dim Dat As Variant
ReDim Dat(1 To 6, 1 To 1)
Dim i As Integer, n As Integer, Day As Integer
On Error Resume Next
With ActiveSheet
.Cells.Hyperlinks.Delete '// 하이퍼링크 제거
For i = 2 To 52 Step 10 '// 날짜가 표시된 셀 선택
For n = 1 To 7 '// 일 ~ 토요일까지 선택
If Not IsEmpty(.Cells(i, n)) Then '// .Cells(i,n)은 현재셀이 비어있지 않으면
Day = Day + 1 '// Day은 날짜수만큼 증가, 배열을 늘려갈 변수에 1을 더함
ReDim Preserve Dat(1 To 6, 1 To Day) '// 동적배열 변수의 저장공간을 다시 할당
Dat(1, Day) = .Cells(i, n) '// 날짜
Dat(2, Day) = .Cells(i, n).Offset(3) '// 날씨
Dat(3, Day) = Mid(.Cells(i, n).Offset(5), 4, 20) '// 최저기온
Dat(4, Day) = Mid(.Cells(i, n).Offset(6), 4, 20) '// 최고기온
Dat(5, Day) = Mid(.Cells(i, n).Offset(7), 5, 20) '// 강수량
Dat(6, Day) = Mid(.Cells(i, n).Offset(8), 5, 20) '// 적설량
End If
Next n
Next i
With .Cells(2, "J") '// 지정한 셀에 대해서
.Resize(Rows.Count - 1, 6).Clear '// 기존값 제거
.Resize(UBound(Dat, 2), UBound(Dat, 1)) = Application.Transpose(Dat)
'// 배열의 행과 열을 바꾸어 값을 넣음
End With
End With
Range([J2], Cells(Rows.Count, "J").End(3)).NumberFormat = "yyyy-mm-dd" '// 날짜 서식으로 지정
Range([J2], Cells(Rows.Count, "O").End(3)).HorizontalAlignment = xlCenter '// 중앙정렬
End Sub
도움되셨다면 공감 꾸욱 눌러주시거나 댓글 부탁드립니다.
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA]MySQL 데이터 엑셀로 가져오기 (0) | 2014.07.28 |
---|---|
VBA 와 MYSQL 연동 준비작업 (0) | 2014.07.28 |
한 시트 파일을 여러개로 나눠 저장 (0) | 2014.06.14 |
전화번호 다루기 (0) | 2014.05.23 |
음력 - 양력 변환 VBA (0) | 2014.05.14 |