PROGRAMMING WORKSHOP

Skip Navigation Links. Skip Navigation Links.

.Net FrameWork|Google.GData.Calendar| Settings

엑셀프로그래밍을 하면서 항상 불안, 불안 한 것은
소루션을 누구에게 만들어 제공했을때
소루션관리상 중요한 정보를 사용자가 생각없이 날려 버리고
마는 경우이다
엑셀시트에 자유롭게 작성하던 습관으로 생각없이 중요한정보를(Critical Information)
손쉽게 삭제를 해 버리고 마는 위험성이 있다
또한 중요한 시트도 샥 날려 버리고..
물론 이런 것들이 에러의 원흉이 된다
찾으려고 하는 정보를 날려 버렸으니 이것을 어디가서 찾나?!#!@
앞장에서 사용자의 이메일과 패스워드정보를 일반적인 엑셀프로그래밍방법으로
시트를 하나 마련하고 시트에 작성하여 보관하고..
좀 보안을 위하여 숨기고 하지만 여엉 불안 한것이니..
이참에 Visual Studio를 사용하면서 좋은 기능을 사용하지 않으면
죄악이다
그래서 시트에 보관하는 것을 생략하고
Visual Studio에서 제공하는 보안이 보장되는 창고를 활용하는 것으로
직행하는 것이 한소리 또하고 ..또하는 것과 차별화될 것 같다

엑셀프로그래밍을 하면서 사용자의 중요한 정보를 코드속에 보관하면
좋지 않을까??를 생각해 보신 적은 없는지..
그러면 좀 안전할텐데..라는 생각
VS에서는 코드속에 보관할수 있는 장치를 해 주었다

소루션창에서 My Project를 열고 Settings탭을 열면 이곳이 바로
정보 저장창고 역할을 해준다



모듈시트에 변수나 상수선언하는 것과 같다
하지만 꽁꽁숨어있는 정보라는 점!! 그것이 중요한 것이다
그리고 이것은 엑셀의 시트에서 정렬이 자유롭듯이 열머리를 크릭하면
자유롭게 정렬을 하게 되어 변수,상수관리가 아주 편리하게 되는 셈이다
예를들어서 아주 중요한 정보들이라고 한다면
데이타베이스의 써버와 연결하는 주요정보인
ConnectionString(써버이름, 패스워드,써버주소, 데이타베이스에 접근하기위한
Provider나 OLEDB타입등)을 보관시킬수도 있고
회사의 중요한 메타정보를 보관할수도 있고
워크시트상의 중요한 기준셀의 주소를 저장할수도 있고

저장하는 정보는 두가지 Scope로 나누어서 관리할 수 있다
하나는 Application..소루션자체관리유지를 위한 정보
또 하나는 User...사용자의 정보..즉 사용자가 사용하다가 소루션을 닫을때
어느 시트의 어느 행을 보고 있었는지를 저장했다가 열면 그 위치에 차분히
다시 접근할수 있게 한다거나
사용자가 좋아하는 바탕색같은 Preference를 저장할수 있다거나
또 지금 만들고 있는 구글카렌다에 접근하기 위한 패스워드와 이메일을
저장을 하게 한다거나..

물론 위와 같은 기능들은 엑셀만으로 프로그래밍을 많이 해보고
누군가에게 소루션을 제공해보고 그러면서 많은 정보관리상의 취약함을
많이 느낀 분들에게는 아주 기가막힌 선물이지만
긴가..민가하는 분들에게는 그냥 있으나 마나 한 기능이다
그러니 유용하지도 않은 정보를 올리지는 않는 것인지 고민하게 만드는
여러가지것중의 하나다!!

실은 위와 같은 인터페이스를 통하여 입력하는 정보는 VS 가 자동으로
화일을 하나 만들어 낸다
아래의 그림과 같이 XML화일을 만들어 내는 것이다
물론 이것을 만지고 고치고 할 필요값 없다 그냥 그렇게 정보화일로
소루션에 포함되는 것이다



엑셀프로그래밍에서 VS를 처음 하게 되면 많은 화일들에 정신이 하나도 없을것이다
대개가 자동생성되는 것들!!
위와 같은 편리한 인터페이스를 통하여 보안된 변수,상수들을
정리보관할수 있는 것이다

이것을 읽거나..Read.. 쓸데는..Write..
Dim sX As Integer=My.Settings.[세팅이름]
으로 하면 되는 것..
My라는 NameSpace 를 치면 Settings개체가 나타나고
Settings를 치고 쩜찍으면 목록이 줄줄이 나타나니 선택하면 되고..
편리하다
개발자가 마음대로 활용할수있는 별도의 창고가 있다는 것은
즐거운 일이다
그렇지않으면 고민을 해야 하면서 다른 어떤 곳에
접근하여 저장하고 사용하는 방법을 택해야 하는 번거로움과
또한 보안상 안전하다고 기대하기 힘들다



Settings에 위와 같이 googleAccount라는 이름을 짓고 값을 사용자가
입력한 UserName과 Password를 이곳에 저장하도록 한다

아래와 같이 UserName과 Password를 사용하여 Google에서 정보를
갖여온후 성공하면 해당 UserName과 Password를
Settings의 googleAccount에 저장한다

Sub refreshFeed()
 ....
 ....
 ....
    Try
        
        ....
        ....
        ....
        Dim sAccounts As String = My.Settings.googleAccount
        Dim sCurrentAccount As String = userName & ";" & passWord

        If String.IsNullOrEmpty(sAccounts) Then
            My.Settings.googleAccount = userName & ";" & passWord
        Else
            If Not sCurrentAccount.IndexOf(sAccounts) >= 0 Then
                My.Settings.googleAccount = My.Settings.googleAccount & "," & sCurrentAccount
            End If
        End If
        My.Settings.Save()
    Catch ex As Exception

    End Try
End Sub

String.IsNullOrEmpty("문자정보")는 값이 비였거나..
없거나..
VBA와 다르게 Null값이라는 것은 어느 언어에서나 심하게 따진다
그래서 위의 것은 Null값이거나 값이 비였거나..

예를 들어서 Yes, No 라는 Boolean값을
Yes도 하지 않고 , No 도 하지 않았을때의 값이 Null이다
대답하지 않았다고 No는 아니지 않은가???
사람에게 무엇을 물었을때..
그렇다고 대답하던가..아니라고 대답을 하여야 하는데
묵무부답이다..이것이 Null값이다

Dim sX As String
이라고 하는 것 보다는
Dim sX As String=""
이라고 항상 변수는 초기화시켜주는 습관이 다른 언어에서 감안하여야 할 부분이다

그리고 여러개의 계정을 관리하기 위하여
Setttings에 여러개의 이름을 관리하기가 좀 그렇다
하나의 GoogleAcount 라는 이름에
여러개의 계정을 이렇게 추가하면서 관리하면 편리할것이다

Username;Password,UserName;Password,UserNaem;Password

와 같이 줄줄이 붙여주고 배열로 따지면 된다

Settings의 정보를 바꾼후에는 반드시
My.Settings.Save() 를 해주어야 하고

위와 같이 저장되면
항상 화일을 열면 해당 계정의 UserName부분만 목록상자에
나타나게 한다



새로운 UserName(이메일)과 Password를 입력하면
유효한 계정이라면 Settings에 추가되어 나가게 되어 화일을
열면 목록에 추가되어 나타나게 된다

이제 다음페이지에서는 정보를 갖여다가 표현하는 엑셀시트 부분을 좀더
다양한 표현을 해보도록 하자
아래 중간과정..사용버전올려 놓았으니 각자 해보시면서
만드는 과정을 잘 살펴서 다른 소루션을 만드는데
도움들이 되시기 바란다


UNO_GoogleCalendar 다운로드 설치 사용하기

최근까지 완성된 소루션을 아래에 올려놓는다
계속 업데이팅되면 아래에 자동으로 업데이팅된 버전이 연결되어
있게 되고..물론 각자 다운로드하여 설치한 것은 자동으로
업데이팅되니 한번 다운로드받으면 계속 새로운 버전으로 업그레이드된다
(일주일에 한번씩 자동 업데이팅하게 설정하여 놓았음)

1)
.Net FrameWork 4.0 설치|이미 .NetFrameWork 4.0환경이면 필요없고..
2)[설치하기]
3)[엑셀소루션다운로드]UNO_GoogleCalendar.xlsm
일반 설치상의 문제는 이 페이지 참조하시고

설치완료되면 UNO_GoogleCalendar.xlsm을 여시고 사용하시면 된다