PROGRAMMING WORKSHOP

.Net FrameWork|System.Speech

어제는 공연히 용쓰고 페이지를 하나 만들었다가 지워버렸다
보신 분들도 있었을 것이고..
너무 욕심을 부려 VB.Net을 본격적으로 시작해보자!!라는 주제로 시작을
하려고 페이지 하나를 만들어 놓고 아침 운동을 나가서 가만히 생각해 보니
이곳을 찾는 분들의 시각에서 너무 오버하는 것이라는 생각이 덜렁 들어서
아침에 삭제 해 버렸다
공연히 그러지 않아도 헷갈리는 곳이 더더욱 헷갈리게 될 것 같았다
그것도 window폼이 아닌 WPF폼으로 시작을 하려고 하였으니 너무 많은 분들에게
낯섫고 너무 뛰어 넘는 것 같아서 안되겠다..싶어서 삭제해 버렸다
그렇다고 포기하는 것은 아니다
방법을 바꾸어서
엑셀쪽에서 .Net FrameWork를 활용하는 엑셀+.Net FrameWork로 가도록 하자
뒤로 들어가던 것을 앞으로 들어가자는 것..방향을 바꾸는 것이고 목표는 같다
이곳에 오는 분들은 모두 [엑셀+MS의 모든 기술]로 파워를 더해가야 할 것이니까..
엑셀에 점진적으로 파워를 더해가는 방향으로 가는 것

엑셀에 Speak 기능을 추가 해보자



위의 그림과 같이 uno-daily의 WPF(window presentaion foundation)으로
구현한 것을 엑셀에 똑같이 구현해 보자
VSTO에서 엑셀을 구현한다고 하는 것은 .Net FrameWork의 기능을 모두
활용한다는 의미이고,
엑셀을 이미 잘 활용할줄 안다고 하는 것은
아주 좋은 표현 도구를 손에 넣고 시작하는 것이다
다른 프로그램. ..기존의 윈도우폼이나 새로운 윈도우 WPF에서나 모두
정보를 어디에 뿌려주어야 할지가..즉 보고서를 꾸민다거나 일부 정보를 보여준다거나
할때 이렇게 저렇게 연구들을 하지만 엑셀만한 인터페이스가 없는 것이다
텍스트박스나 라벨이나 WPF에서는 Document Viwer등의 정보를
보여주는 인터페이스 콘트롤을 개발제공하지만 엑셀만한 파워풀한 도구는 없다

그래서 영어문장을 엑셀 시트에 작성을 하던
어디에서 복사하여 붙여 오던 정보를 넣고
버튼 하나 누르면 영어를 그래도 읽어주게 되는 것이다

라이브러리를 참조한다는 개념을 항상 갖고 있는다면
지극히 간단하다



프로젝트창에서 프로젝트속성창을 열고 Reference탭의 Add버튼을 크릭하여
나타나는 대화상자에서 Net탭을 선택하고 그 속에서
System.Speech 를 선택하면 필요한 라이브러리가 참조된 것이다
이 라이브러리가 갖고 있는 소리를 내는 기능속에는 아주 쎄련된 음향소루션을
만들어 내는 다양한 기능이 있지만..
그냥 영어를 읽어라!!라는 기능만 활용해도 좋다

그렇게 한후 시트에 버튼 콘트롤 하나 달고 버튼의 Click 이벤트프로시져에
아래와 같이 작성하면 시트에 있는 영어문장을 잘 읽어 줄것이다

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim rData As Excel.Range = Globals.Sheet1.Range("A1").CurrentRegion
    Dim voice As New Global.System.Speech.Synthesis.SpeechSynthesizer
    For Each rEachRow As Excel.Range In rData.Rows
        voice.Speak(rEachRow.Value)
    Next
End Sub

물론 한글이 있으면 한글은 생략하고 자기가 알아서
영어만 찾아서 읽어 나간다
그런데 짜식이.. 쩜이라던가, 따옴표라던가, 퀘션마크라던가,숫자라던가 부호들을
같이 읽어 버린다
그런 부분은 역시 .Net FrameWork에서 제공되는 것들을 잘 활용하면된다..
아래와 같이

***[LOG-IN]***