Excel & VBA---Brain Training
하다보면 자꾸 어려워하는 문제로 가는 것 같다..
다시 쉽게..!!!!
문자열 정보 쉬운 문제해보자
문자열 정보가
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
이라는 것이 있다 치자
두개의 문자를 위치를 바꿔보시기를
BA DC FE HG JI ....
와 같이 두개씩 띄어서 두개의 문자의 위치를 앞뒤로 바꾸어 만들기
다시 명령하면 다시 두개의 문자가 바뀌고 또 명령하면 또...Toggling하게 한다
Dim sTxt As String
sTxt="ABCDEFGHIJKLM......"
막상 풀려니까..답답하신가???
척 풀려야 한다!!
시계놓구 풀리는 시간에 따라 등급이 갈린다
BrainTraining_067_2.
어떤 단계마다 변수를 만들어 보는 습관이 해법이 된다
문제 또 하나
아래의 문자열정보를
영문 대문자만 모아서 맨앞에 숫자만 모아서 그다음에
한글만 모아서 그 다음에 영문소문자 맨뒤로 몰기
abcdefg23432ABCE23432가나다abcABCEXZQ874라마바432AZYX사아파타
를 아래와 같이
ABCEABCEXZQAZYX 2343223432874432 가나다라마바사아파타 abcdefgabc
푸는 재미가 쓰잘데 없는 컴퓨터께임보다 좋아야 할텐데..
마구 신나는 소리나고 쏘아대는 것이 더 재미있겠지@#@! 아무튼..
재미를 느끼는 것은 각자의 몫이고!!!
BrainTraining_067_3.
워크샵에 [2007리본편집기]를 올려놓고 보니까..
UNO-RibbonMaker.
이것을 만드는데 가장 중요한 것은 문자열정보의 처리테크닉이였다는 것을
보여 드려야겠다
엑셀도 2003이전까지는 화일이 바이너리정보로 구성된 화일이였으나
2007버전이후부터는 엑셀이라는 것이 없어도 엑셀의 정보를 볼수 있는
개념으로 가다 보니까..엑셀화일자체가 xml로 구성이 된다
물론 사용자는 xml인지 뭔지 알 필요는 없다
물론 또한 이전 버전과 같이 바이러리로 구성을 할수도 있다
그래서 확장자명이 xlsb는 이전 버전과 같은 바이너리형식의 화일이고
xlsx나 xlsm은 xml문서도 구성된 화일이라고 보시면 된다
xml이라는 것이 바로 순수한 문자열정보들로 구성이 된 녀석인 것이다
시트에 위와 같이 입력하고
아래의 코드를 실행 해보시면
Sub writeXML()
Dim rDatas As Range, rRow As Range
Dim sXML As String
Set rDatas = ActiveSheet.Range("A1").CurrentRegion
Set rDatas = rDatas.Offset(1).Resize(rDatas.Rows.Count - 1)
sXML = ""
sXML = sXML & "<데이타들>"
For Each rRow In rDatas.Rows
sXML = sXML & "<데이타>"
sXML = sXML & "<지역>" & rRow.Cells(1) & "지역>"
sXML = sXML & "<담당자>" & rRow.Cells(2) & "담당자>"
sXML = sXML & "<매출>" & rRow.Cells(3) & "매출>"
sXML = sXML & "데이타>"
Next
sXML = sXML & "데이타들>"
Open ThisWorkbook.Path & "\test.xml" For Output As #1
Print #1, sXML
Close #1
End Sub
xml화일이 만들어 질것이다
순전히 문자열을 정보를 조합한 것이다
xml이라는 형식으로 볼수 있게 문자열을 조합한 것이다
그냥 Text문서와는 다른 것은 xml국제규약에 맞추어 Tag라는 것을 문자열정보로
구성한 것이다
이런식으로 2007버전이후의 것들은 xml문서로 작성이 된 것이다
물론 TAG의 속성들이 무지복잡하게 구성이 되지만
컨셉은 위와 같은 것이다
위와 같이 xml문서로 만들어서 엑셀이 없는 시스템에 보내주면
xml문서의 내용을 알아서 볼수 있게 되는 셈이다
위의 리본을 만드는 화일은 위의 XML을 이해하면 되는 것이다
리본의 구성도 xml문이다 보니까..
만들고 싶은 리본메뉴를 xml문으로 작성하여 엑셀화일속에 쑤셔 넣어주는 셈이다
갖고 있는 2007버전의 아무 화일이나 화일명의 뒤에 .zip 이라고
확장자명을 더 추가 시켜보시기 바란다
그리고 zip화일을 열어보면 죄다 xml화일들이 여러 홀더를 구성하면서
만들어져있다는 것을 알수 있다
구경이 다 끝났다면 다시 뒤의 확장자에서 .zip을 제거해주면
엑셀단일 문서로 돌아간다
초보님들에게는 어렵지만 대강의 내용을 알고 있으시라고 하는 것이고
문자열정보의 역할의 중요함을 강조하기 위한 것이였으니..
언젠가 스스로 만들수 있을 실 것을 기대하면서..
웹페이지를 구성하는 것들은 거의가 문자열정보이고
웹페이지간에 왔다갔다하는 것들도 모두 문자열정보이다
숫자가 왔다갔다하는 것도 전부 문자열로 왔다갔다하는 것이고..
이것을 받아서 처리하려면 문자를 숫자로 변환시켜서 보는 것이 습관적으로
이루어 지는 것이다
웹페이지상에서 VBA같은 역할을 하는 녀석이 JavaScript이고
이것의 유용성은 대단하다..
쌤플로 이것을 하나 실행 시켜보시기 바란다
Sub makeJavaScrip()
Dim sJS As String
sJS = ""
Open ThisWorkbook.Path & "\test.htm" For Output As #1
Print #1, sJS
Close #1
ThisWorkbook.FollowHyperlink ThisWorkbook.Path & "\test.htm"
End Sub
Javasript구문을 하나 문자열로 엮어서 작성하고
이것을 htm문서로 저장하고
이것을 FollowHyperlink 메소드로 열어 보았다
웹페이지가 열리는 순간..
Javascript가 실행되어 VBA에 MsgBox에 대한 하는 Alert 가 작동되어
실행되어 메시지 박스가 떴을 것이다!!
이 말은 좀 노력하면 시트상의 내용을 웹페이지로 만들어서 보관할수도 있다는
소리고..그러려면 문자열정보를 사랑하야야 한다