Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

PowerPoint|Shape|AutoShapeType|TextFrame|Characters|Text|Fill|ForeColor|
|FillFormat|ColorFormat|RGB|Array|UBound()|
|Object Browser|

현대의 컴퓨터프로그래밍은 기본적인 프로그래밍언어의
Iteration And Decision Block(순환과 조건분석결정 브록)의 이해와
변수와 제공하는 함수정도를 익힌후에는
다양하게 제공되는 오브젝트들을 어떻게 활용하느냐의 문제인것이다
UNO-EXCEL-PROGRAMMING의 앞부분 VB부분을 철저히 이해하고
익숙해지면 다양한 오브젝트를 어떻게 조립해서 사용하느냐의
문제가 남는것이다

그래서 VB언어에 대한 페이지와 엑셀의 기본적인 오브젝트들
외에는 순서없이 진행을 하니 잘 챙겨가면서 보시기 바란다

VBA언어는 엑셀에서만 사용하는것이 아니다
Office내의 여러 프로그램과 VBA를 지원하는 다른 프로그램의
자동화작업에 모두 사용하는 것이다
그러니 엑셀은 VBA를 배우는 툴로서도 가장 좋은 툴이니
Word나 PowerPont등에서의 자동화의 반은 알게 되는 셈이다
또한 Office는 공동으로 사용하는 오브젝트를 제공한다
그중에 하나가 Shape오브젝트이다

개체찾아보기창(Object Brower)의 활용

Shape오브젝트가 엑셀과 파워포인트의 오브젝트모델에
어떻게 존재하는지 보는 방법을 설명해 보자



그림과 같이 VBA편집기에서 F2를 누르면 항상 개체찾아보기창이
열린다
이때 라이브러리콤보상자를 열면 기본적으로
몇가지 라이브러리가 리스팅된것을 볼수 있다
파워포인트의 개체들이 어떻게 생겼는지 보고 싶다면
엑셀에서 외부라이브러리를 참조하여야 한다
그림과 같은 사용가능한 라이브러리 참조창에서 파워포인트를 체크해주면
라이브러리 콤보상자에 리스팅되고 이것을 크릭하면



위의 그림을 보면 엑셀에서 Shape오브젝트를 잘 활용할수 있다면
파워포인트혹은 워드에서도 Shape오브젝트는 잘 활용할수 있다는것을
알수 있다
개체찾아보기 창은 외부의 다른 프로그램과 연동시켜서 프로그래밍을 할때
많은 도움이 되고 어떤 기능이 있는지 알고 싶을때
한번씩 열어서 훑어 보는것도 많은 도움이 될것이다

또한 외부프로그램(라이브러리)을 불러서 사용하지 않을때는
외부라이브러리를 참조시켜 놓지 않는것이 좋다

PowerPoint의 Shape오브젝트를 만져보자

Shape오브젝트를 PowerPoint에서 구현해보자
여기에서는 엑셀에서 파워포인트를 불러서 파워포인트문서를
만들어 가는 자동화가 아닌 파워포인트자체에서 프로그래밍을 하여
열어보도록 한다

PowerPoint의
매크로/보안/보안수준/낮음이나 보통으로 하시고
아래 화일 크릭!!참가 회원님들이 아니라도 공개되어 있으니 크릭!!

PowerPoint Animation




PowerPoint는 Shape오브젝트로 거의 문서가 이루어지는것이니
Shape오브젝트를 다룰줄 안다고 하는것은 PowerPoint의
자동화를 할줄 안다고 해도 되는것이다

Sub changeShape(oX As Shape)
Dim arrShape As Variant
Dim iNum As Integer
On Error Resume Next
arrShape = Array(94,95,96,91,93,129,131,125,134,132,130,127, _
                 126,128,136,133,135,25,137,41,44,15,20,13, _
                 52,60,108,11,14,48,100,46,45,47,99,4,18,27, _
                 26,104,36,56,98,89,90,62,75,79,73,64,63,84, _
                 87,88,67,81,66,86,71,72,82,68,74,78,65,70,61, _
                 79,85,80,83,77,69,16,21,10,102,7,34,54,31,29, _
                 37,57,40,43,22,109,113,121,117,122,118,111, _
                 115,123,119,112,116,124,120,24,19,50,138,6,9, _
                 107,2,51,28,39,59,1,105,12,33,53,32,30,8,5, _
                 106,17,49,23,3,35,55,38,58,97,42,101,103)
iNum = UBound(arrShape)

With oX
    .AutoShapeType = arrShape(Int(Rnd * iNum))
    .Fill.ForeColor.RGB = Int(Rnd() * 16777215)
End With
oX.Parent.Shapes(4).TextFrame.TextRange.Text = oX.AutoShapeType
End Sub

위의 프로시져를 똑같이 엑셀에서 사용하여도 아래와 같이
실행된다

oX.Parent.Shapes(sShp).TextFrame.TextRange.Text = oX.AutoShapeType

의 표현식에서 TextRange를 Characters메소드로 바꿔주는 일만 하면 된다
실은 위의 구문은
oX.Parent.Shapes(4).TextFrame.TextRange.Characters.Text = oX.AutoShapeType
에서 Characters가 생략된것이다

oX.Parent.Shapes(sShp).TextFrame.Characters.Text = oX.AutoShapeType

Fill속성은 FillFormat오브젝트를 만든다

이것이 뭔소린가??
Shape오브젝트가 제공되기전의 도형에서는

With Worksheets.Add
    With .Rectangles.Add(10, 10, 50, 50)
        .Interior.ColorIndex = 3
        .Border.ColorIndex = 1
        .Border.Weight = xlThick
        .Characters.Text = "X"        
    End With
End With

과 같이 Interior속성(Interior오브젝트)을 통하여
내부의 서식을 하였었다
Shape오브젝트에서는 Interior속성에 해당하는 것이 Fill속성이고
Fill속성은 FillFormat오브젝트를 만들고 FillFormat오브젝트가 갖고 있는
속성이나 메소드는 아래의 그림과 같다



그림에서 보듯이 Interior오브젝트가 제공하는 속성은
간단하게 몇개 되지 않지만..
FillFormat오브젝트는 속성도 있고 메소드도 제공되고 있는것을 볼수 있다
이것의 의미는 좀더 섬세하게 다양한 표현을 할수 있다는것을
의미하는것이다

ForeColor속성은 ColorFormat오브젝트를 만든다

Shape오브젝트가 제공되지 않을때는

objX.Interior.ColorIndex=3

과 같이 엑셀에서 제공하는 색상번호만 부여하는 아주 간단한것이였으나
Shape오브젝트에서는

objX.Fill.ForeColor.RGB=Value
objX.Fill.ForeColor.SchemColor=Value
objX.Fill.ForeColor.TintAndShade=Value

와 같이 좀더 색상을 완벽하게,다양하게 구현하도록 한것이다



아래의 화일에는

  • 위의 파워포인트에서의 구문의 설명과
  • 파워포인트에서 실행된 코드를 그대로 엑셀에서 활용하기
  • Array함수의 유용함등을 살펴 본다


Shape In PowerPoint And Excel