1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

[펌] 엑셀 VBA 총정리 _ Excel 개체 모델 참조 등

기타 조회 수 15923 추천 수 0 2010.03.09 14:03:38

출처 : http://onesixx.tistory.com/344

 

 

***********************************  Excel 2007에서 사전작업 ***********************************

1. Microsoft Office 단추 단추 모양를 클릭한 다음 Excel 옵션을 클릭
2. 기본설정에서 리본 메뉴에 개발 도구 탭 표시 확인란을 선택
3. 메뉴중 개발도구 추가된 것 확인

***********************************   매크로 VBA**************************************************

매크로를 실행 방법 3가지
1> 지정된 바로가기 키
2> 개발도구> 매크로 를 클릭> 실행시킬 매크로로 선택> [실행] 버튼 Click.
3> 매크로와 연결된 버튼 클릭

매크로를 만들기
1> 매크로 기록 : 내가 작업한 내용을 엑셀이 알아서 VBA 코드로 기록
2> 직접  VBA (Visual Basic for Applications ) code 입력

화면 및 용어 설명

*VBE창 (창)

프로젝트 탐색기 :  Crtl+ R
속성창 : F4
코드입력창: F7
직접실행창: Crtl +G


*모드  - 디자인 모드 , 디버깅 모드, 런타임 모드변수

******************************************** Application , 개체 (Object) *****************************

- 모든 것을 외우려하지말고, 매크로 기록기로 원하는 동작을 해보고 메서드와 속성을 확인해 본다. 
- 도움말을 적극 활용

Application =  Excel ...

Excel은 47개의 Object로 이루어져있다.

* Object

* Collection (컬렉션) :
  같은 클래스의 집합체, 관련 개체 집단을 포함하는 개체
     엑셀 계보도에서 오브젝트 뒤에 s가 붙은 것(예를 들면 Workbooks, Worksheets, Names, Windows,...)
     여러 개가 모여서 하나의 큰 덩어리를 이루고 있는 집합체

     컬렉션에서 개체의 위치는 컬렉션 내에서 변화가 생길 때마다 바뀔 수 있어 
     컬렉션 내에서 특정 개체의 위치는 변할 수 있습니다.

   예) 셀 영역 A1:A100 이라는 영역이 있다면, 
         셀 하나하나가 개체가 될 수 있으므로  그 셀의 집단을 컬렉션이라 할 수 있다.
   예) 유저폼에 작성한 텍스트 박스등 컨트롤 들의 집단도 될 수 있습니다.


Excel 개체 모델 참조 ,  Excel 2007 개발자 참조>참조 ,   애플리케이션 오브젝트의 계보

download.blog?fhandle=YmxvZzk2MDkxQGZzNy50aXN0b3J5LmNvbTovYXR0YWNoLzAvMzgucG5n



********************************************* Control *******************************************
콘트롤은 앞에서 살펴본 단추모양이나 텍스트 박스 등을 가리키는 말입니다.
이러한 콘트롤은 윈도우 프로그램을 구성하는 기본이 되며, 엑셀에서는 이 콘트롤을 개체라는 개념으로 이해하면 됩니다.
개체는 통합 문서, 워크시트, 차트, 셀 영역과 같은 엑셀의 한 요소를 의미하는 것입니다.

1. Property(콘트롤에 대한 변수) 
메쏘트처럼 각 콘트롤들은 자신에게만 적용될 수 있는 변수들이 별도로 마련되어 있는데, 이것을 속성이라고 합니다
읽기/쓰기가 가능한 속성
읽기 전용 속성

  • Value 속성:  어떠한 개체가 가지고 있는 값을 읽어오거나 값을 할당(저장)하고자 할 경우에 사용
  • Offset 속성: 지정한 범위부터 오프셋되는 범위를 나타내는 Range 개체를 반환 <읽기전용>
                          expression.Offset(RowOffset, ColumnOffset)
                        Ex) A1 셀로부터 행(Row) 방향으로 3, 열(Column) 방향으로 3 만큼 떨어진 셀을 구하려면
                              Range("A1").Offset(3,3) 이라고 합니다. --> D4
  • Name 속성: 개체의 이름을 반환해 주거나 변경
  • Count 속성: 지정된 개체의 개수 구하기
                         Ex) myCnt = Workbooks.Count
  • WorksheetFunction속성: 엑셀의 워크시트에서 사용하는 함수들을 VBA 에서도 사용할 수 있도록 제공
                                            Application(Excel) 개체에 딸린 속성  ex) Application.WorksheetFunction.Max(rng)
  • Formula 속성: 셀에 수식 또는 값을 대입할 때 사용 
                           (그러나 수식이 아닌 값을 대입할 경우는 보통 Value 속성을 이용)                       ex) 셀 영역 A1:A10의 합을 구하는 =SUM(A1:A10) 이란 수식을 A11 셀에 입력
                                 Range("A11").Formula = "=SUM(A1:A10)"
                          ex) B1 셀에 A1 셀부터 데이터가 있는 A 열의 마지막 데이터가 있는 셀 까지 지정하여 SUM 함수를 입력
                                1) 중간에 빈 셀도 포함여 A 열의 맨 마지막 셀까지 계산
                                 Range("B1").Formula = "=SUM(A1:A" & Range("A65536").End(xlUp).Row & ")"
         A65536 셀에서 처음으로 유효한 데이터를 만나는 셀까지(빈 셀이 아닌 처음 셀) 이동하되 방향은 위로 이동하라
         A65536 셀로부터 처음으로 빈 셀이 아닌 셀이 A100 셀 이라면 위 코드는 100 이라는 값을 되돌리게 되고 
         코드는  "=SUM(A1:A" & 100 & ")" ==> "=SUM(A1:A" & 100 & ")" ==>"=SUM(A1:A100)"
                                 2) 간에 빈셀이 있는 것은 무시하고 현재 연속된 영역에 대해서만 계산                         
                                 
                                 Range("B1").Formula = "=SUM(" & Range("A1").CurrentRegion.Address & ")"
             다만 A 열과 연속된 B 열에 어떠한 값이 있다면 곤란하므로 Resize 속성을 이용하여 다음과 같이 수정합니다.
                        ==>    Range("B1").Formula = "=SUM(" & Range("A1").CurrentRegion.Resize(,1).Address & ")"
                                  
  • FormulaArray 속성:  Formula 속성과 마찬가지로 셀에 수식을 입력할 때 사용하지만
                                   다만 다른 것은 수식을 배열 수식으로 수식을 입력하고자 할 경우에 사용

    2. Mothed (콘트롤에 대한 함수)
    콘트롤들은 매우 다양한 성격을 가지고 있서 이들의 기능이나 작동은 서로 다릅니다.  이러한 콘트롤들에는 이들을 제어할 수 있는 별도의 함수들이 내장되어 있는데, 이렇게 해당 콘트롤에 대해서만 호출하여 사용할 수 있는 함수들
    주의:   절대적으로 사용하지 않으면 안될 경우를 제외하고는 Select , Activate, Goto(특히) 메서드는 사용안함.

    • Select 메서드  :  개체( 셀 영역, 차트, 그리기 개체등) 를 선택하라.

                               ex) A1 셀을 선택하려면   Range("A1").Select

                               ex) A1:B1 셀을 선택하려면 Range("A1:B1").Select

    • Activate 메서드 : 개체를 활성화 하라

                               활성화란 편집 가능한 현재 셀 또는 현재 개체로 만든 다는 점에서 Select 와 틀립니다.

                               따라서 Activate 메서드는 유일한 하나의 개체만을 반환 한다는 것입니다.

    • Goto 메서드 : 범위를 선택,   선택한 통합 문서가 활성화되어 있지 않으면 활성화시킵니다.(속도때문에 잘 안씀)

    • Add 메서드 :  컬렉션(통합 문서, 시트, 차트등)에 개체를 추가하고자 할 경우에 사용

                           ex) Set NewWorkBook = Workbook.Add  <-- Set 문을 이용하여 새 문서를 (빈 문서) 추가

                                 Set NewWorkSheet = NewWorkbook.Sheets.Add  <--Set 문을 이용하여 새문서에 시트를 하나 추가

    • Intersect 메서드 :  둘 이상의 범위에서 사각형 모양의 겹치는 부분을 나타내는 Range 개체를 반환.

                             expression.Intersect(Arg1, Arg2, ...)

    • ClearContents: 셀에 입력된 값/수식을 지움  (셀을 선택하고 키보드에서 Delete 키를 누른것과 동일한 효과)

                              ex) Sheet1의 셀 범위 A1:G37에 있는 수식을 지우는 예제

                                    Worksheets("Sheet1").Range("A1:G37").ClearContents 

                             ex) Chart1에서 차트 데이터를 지우는 예제

                                    Charts("Chart1").ChartArea.ClearContents

    • Delete 메서드  : 셀 또는 개체를 삭제 (셀을 선택하고 편집 -> 삭제를 선택했을때와 동일한 효과)

                             ex)  A1:A3 셀에 각각 1,2,3 이라는 값이 있다고 한다면할때 A2 셀이 삭제되고

                                   결과는 A3 셀이 위로 한칸 당겨져 올라와 A2 셀의 값이 3이 되게 됩니다             

                                   Range("A2").Delete

    • 3. Event  : 콘트롤에 대한 사용자나, 환경에 대한 반응

      • Click 이벤트 : 컨트롤을 마우스로 클릭했을 때 발생되는 이벤트
                               ex) Private Sub CommandButton1_Click()
      • Change 이벤트 : 컨트롤이 가지고 있는 값이 변경되었을 때 발생되는 이벤트.
                                  ex)  텍스트 박스에서는 사용자가 키입력을 할 때,
                                         콤보 박스나 리스트 박스에서는 사용자가 목록을 선택했을 때.
                                         Private Sub TextBox1_Change()
      • ****************************************************주요 Object ***************************************************

        1. 워크북 오브젝트(Workbook Object)    =  엑셀 파일 (엑셀 통합 문서)

                   Excel.exe 파일을 클릭하는 순간 Book1.xls 라는 워크북 오브젝트가 생성
            ==>  Excel.exe가 가지고 있는 Workbook Class에 의해 새로운 워크북 오브젝트가 생성되는 것
            download.blog?fhandle=YmxvZzk2MDkxQGZzOS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMzYucG5n

            ex) 새로운 통합 문서가 하나 만들기         
                    Workbooks.Add
            ex) 새로 만들어진 통합 문서를 Temp.xls라는 이름으로 저장까지
                    Workbooks.Add
                    ActiveWorkbook.SaveAs Filename:=Application.DefaultFilePath & "\Temp.xls"


        2. 워크시트 오브젝트(Worksheet Object)  = 워크시트 그 자체

            ex) 워크시트 삽입하기                           Worksheets.Add
                  워크시트 삽입하기 (삽입 위치와 매수지정)   Worksheets.Add   after:=Worksheets(1), Count:=2 
                  시트 선택하기                                   Worksheets("Sheet2").Activate
                  시트 선택하고 이름 바꾸기             Worksheets("Sheet2").Activate
                                                                             ActiveSheet.Name = "MySheet"
                  시트 이동 / 복사하기      Worksheets("Sheet1").Move     after:=Worksheets("Sheet3")
                  시트 삭제하기                 Application.DisplayAlerts = False       '확인박스 안나오도록 
                                                           ActiveSheet.Delete
                                                           Application.DisplayAlerts = True

        3.  레인지 오브젝트(Range Object)

        엑셀에 입력되는 대부분의 데이터들이 바로 Range 오브젝트에 보관

        Range 오브젝트에 접근하는 방법
        - 앞에 아무 것도 붙이지 않으면 현재 워크시트를 대상

        black_dot.bmp Range.Range 속성   
               Ex) 'Sheet1' 시트의 A1 셀에 '100' 이라는 값이 입력           Worksheet("Sheet1").Range("A1").Value=100
                      B3:E7 영역의 모든 행들에 'Test' 라는 문자열입력      Range("B3:E7").Select
                                                                                                              Selection.Rows = "Test"
                     열B, 열C, 열D,열E까지 'Test' 라는 문자열입력              Columns("B:E").Value = "Test"
                     행3, 행4, 행5, 행6까지 'Test' 라는 문자열입력             Rows("3:6").Value = "Test"

                                                                                                              Range("B2:E3").Select
                     이미 선택된 상태에서 범위를 열전체로 확대              Selection.EntireColumn.Select
                     이미 선택된 상태에서 범위를 행전체로 확대              Selection.EntireRow.Select

        black_dot.bmp Range.Cells 속성
               Cells(행, 열)의 형식으로 표기 (Range 속성의 표현방법과는 반대 순서)
               Cells 프로퍼티의 가장 큰 장점은 인수에 숫자값을 사용할 수 있다는 것입니다

               Ex)현재 시트의 B5 셀에 숫자 '100'을 입력합니다.                 Cells(5,2) = 100
                    Range속성과 함께                                                               Range(Cells(3, 2), Cells(10, 5)).Select
                    B2:E9 영역 내에서 행 방향 3번째, 열 방향 2번째에 셀   Range("B2:E9").Cells(3, 2) = 100

        black_dot.bmp Range.Offset 속성
               Ex) Sheet1에서 현재셀부터 오른쪽으로 3열, 아래로 4행      ActiveCell.Offset(rowOffset:=3, columnOffset:=4).Activate

        black_dot.bmp Application.Union 메서드를 사용하는 방법

         

        CurrentRegion 속성: 특정한 셀에 인접해 있는 영역    (현재 영역을 나타내는 Range 개체를 반환) 
                                         현재 영역은 빈 행과 빈 열로 둘러 싸인 범위, 읽기 전용
                                         (자기 자신을 둘러싸고 있는 인접한 바로 옆 셀이 빈 셀이 아니면 그 셀이 포함된다는 말)

        UsedRange 속성 :  떨어져 있는 영역을 포함하여 '워크시트 중에서 사용된 모든 영역'을 선택

                                       *Worksheet 오브젝트의 속성 : 즉, Range("A1:E100").Select 와 같은 형태로는 사용할 수 없다

         

         

         

        ***************************************************** 변수/상수, 배열 ***************************************************

        *데이터 형식: 보유할 수 있는 데이터의 종류를 결정하는 변수의 특성을 의미
                              Byte, Boolean, Integer, Long, Currency, Decimal, Single, Double, Date, String,
                             Object, Variant(기본값), 그리고 개체의 특정 형식 뿐만 아니라 사용자 정의 형식을 포함

        * 배열

        정적배열: 변수를 배열로 선언할 때 그 차원의 크기가 이미 정해진 배열
        Ex)  Dim MyArray(100)     As Integer               '숫자로 정확하게 그 크기가 결정
               Dim MyArray1(10,20) As Single

        동적배열:  변수를 배열로 선언할 때,  그 차원의 크기가 모를경우 그 크기를 유동적으로 조정할 수 있는 배열
        Ex)  Dim MyArray() As Integer

        * 상수 선업 방법
                 1) Const 상수명 As  데이터형식 = 값 
                     자동으로 그 값에 따라  적당한 형식이 지정. (기본값은 Private)
                     (편리한  프로그램의 수정/유지보수가 편리, 프로그램의 이해가 용이하게하기 위해 사용
                       Const pi As Double = 3.141592654)

                 2) Built-in 상수
                    download.blog?fhandle=YmxvZzk2MDkxQGZzOS50aXN0b3J5LmNvbTovYXR0YWNoLzAvMzgucG5n

        * 변수의 선언 방법
                 1) Dim     변수명 As 데이터형식  
                     As 절을 사용하지 않으면 Variant 형식으로 지정
                     배열변수:
        Dim A(1 To 65536) As Integer   ' A열모두
                                      Dim myArray(1 To 65536, 1 To 256) As Integer

        2. ReDim 문
           Private, Public 또는 Dim 문에 의해 이미 명시적으로 선언된 동적배열의 크기를 지정 혹은 재확정
          
        ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

        3. Public 문
          
        변수를 프로젝트 어느 곳에서든 사용하고자 할 경우에 사용합니다. (전역 변수, Global 문)

        4. Private 문
          
        변수를 지역으로 사용하고자 할 경우에 사용합니다. (지역 변수)

        6. Static 문
           
        프로시저 수준에서 선언된 모든 변수는 프로시저가 종료되면서 그 수명을 다하게 됩니다.
            그러나 어떠한 목적에 의해서 프로시저가 종료되었으나 그 프로시저가 다시 호출 되었을 때 
             그 값을 유지하고 싶은 변수가 있다고 할 경우에 사용됩니다.

        5. Type 문
          
        하나 그 이상의 구성요소를 가지는 사용자가 정의하는 형식을 선언할 때 사용( 모듈 수준에서 선언) 
           예)  Dim 회원성명 As String
                  Dim 전화번호 As String
                  Dim 주소     As String
                  Dim 가입일    As Date

            ==> Type 회원정보
                           회원성명 As String
                           전화번호 As String
                           주소       As String
                           가입일    As Date
                    End Type

                    Dim MemberInfo  As 회원정보
                    Dim 회원성명     As String

        7. Enum 문
           
        특정 목적을 위한 그룹화된 변수들을 선언할 때 사용
            (Enum 문으로 선언된 형식을 With 문 사용불가
            Enum 문은 모듈 수준에서만 나타날 수 있다)

            예)   Enum myColor
                             cError = 3                   ' 빨강색
                             cCaution = 5               ' 파랑색
                             cCanNotKeyIn = 15     ' 회색 25%
                             cKeyIn = -4142            ' 색상없음(셀의 기본 바탕색)
                              cHasNoData = 34       ' 연한 옥색
                    End Enum


        8. Deftype 문    선언된 변수의 형식을 결정하고자 할 경우 사용( 각 형식을 지정할 문자는 대소문자를 구분안함.)

        *변수의 수명
                   프로젝트 - 클래스 ( Procedure1, Procedure2, ....)
                                  - 폼     ( Procedure1, Procedure2, ....)
                                  - 모듈  ( Procedure1, Procedure2, ....)



          

        ******************************************** 연산자 ****************************************************

        1. 산술 연산자
          + , -, *, / , ^ (지수승, POWER 함수와 동일),  \    (몫,  QUOTIENT 함수),  Mod (나머지, MOD 함수)
        2. 비교 연산자
          <,<=, > >=, =, <>, Is (두개체가 가르키는 변수의 동등비교), Like (문자열비교- ? * # 등 사용)
        3. 문자열 연결 연산자
          &
        4. 논리 연산자
           And , Eqv,  Imp,  Not,  Or,  Xor


        ************************************************* 문 **********************************************

        *문: 선언문 : 변수나 상수, 프로시저의 데이터 형식과 이름 정함
              지정문 : 변수나 상수에 값이나 식을 지정
              실행문 : 동작을 초기화하는 문.  메서드나 함수를 수행할 수 있고 코드 블록을 반복하거나 분기가능


        * Set 문
        변수에 개체를 참조하도록 할당하는 경우에 사용 (변수는 Object 형식으로 선언)
        개체를 참조하도록 한다는 것은 지정된 개체가 가지고 있는 속성들의 값을 읽거나 쓰거나 할 수 있도록 한다는 것
        Set 문은 보통 Workbook, Worksheet, Range 등 통합문서와 관련된 부분에 많이 사용(아래의 방법 말고도 많은 방법이 있다.)

        1) "Book1.xls" 라는 문서를 참조
        Dim myBook    As Workbook
        Set myBook = Workbooks("Book1.xls")


        2) "Book1.xls" 파일의 "Sheet1" 이라는 이름을 가진 워크시트를 참조
        Dim myBook    As Workbook
        Dim mySheet   As WorkSheet
        Set myBook = Workbooks("Book1.xls")
        Set mySheet = myBook.Sheets("Sheet1")
        또는
        Dim mySheet   As WorkSheet
        Set mySheet = Workbooks("Book1.xls").Sheets("Sheet1")

        3) " Book1.xls" 파일의 "Sheet1" 이라는 이름을 가진 워크시트의 "A1:A10" 영역을 참조
        Dim myBook    As Workbook
        Dim mySheet   As WorkSheet
        Dim myRange   As Range
        Set myBook = Workbooks("Book1.xls")
        Set mySheet = myBook.Sheets("Sheet1")
        Set myRange = mySheet.Range("A1:A10")
        또는
        Dim myRange   As Range
        Set myRange = Workbooks("Book1.xls").Sheets("Sheet1").Range("A1:A10")


        * On Error 문
        1) On Error GoTo line
        코드의 실행도중 오류가 발생하면 On_Error_Rtn 이라는 레이블이 있는 곳으로 이동

        2) On Error Resume Next
        코드의 실행도중 오류가 발생하면 오류를 무시하고 다음에 작성된 코드를 실행합니다.
         
        3) On Error GoTo 0
        모든 오류 처리를 중지하고 오류가 발생하면 디버그 창을 띄웁니다.
         


        * 키워드 Option

        1. Option Base 문
           배열을 선언할 때 시작하는 값을 변경할때 사용 (기본값은 0)
           Option Base 0 또는  Option Base 1

        2. Option Compare 문
          - Option Compare Binary
          -
        Option Compare Text     문자를 비교하는 방법에서 대소문자를 구분할 것인가 아닌가 결정
          - Option Compare Database 3. Option Expicit 문
           거의 반드시 사용함.
           모든 변수/상수는 반드시 명시적으로 선언되어야 한다. 그렇지 않으면 잘못된 변수/상수이다라는 의미
           참고) 이 문이 사용되었다면 VBA 가 자동으로 오류를 나타냅니다.

        4. Option Private 문
           현재 프로젝트가 다른 프로젝트에서 참고하지 못하도록 합니다.

         

        * 디스크에서의 작업과 관련된 문들

        1. ChDrive 문  :   현재 드라이브를 변경합니다.
           Ex)   ChDrive "D" ' 현재 드라이브를 D: 드라이브로 변경합니다.
        2. ChDir 문 :   현재 경로를 변경합니다.
           Ex)   ChDir "D:Temp" ' 현재 경로를 D:Temp 로 변경합니다.
           참고) ChDir 문으로 현재 경로를 변경할 수 있습니다.  반대로 현재의 경로를 알 수 도 있습니다.
                 현재의 경로를 알려면 CurDir 함수를 이용합니다.
                 Dim myPath As String
                 myPath = CurDir("C") ' C: 드라이브에 설정되어 있는 현재 경로를 문자열로 반환합니다.
        3. MkDir 문 :  새로운 경로를 생성합니다.
           Ex)   MkDir "D:Temp" ' D: 드라이브에 Temp 라는 이름의 경로를 생성합니다.

        4. RmDir 문:   기존의 경로를 삭제합니다.
           Ex)   RmDir "D:Temp" ' D: 드라이브에 Temp 라는 이름의 경로를 삭제합니다.

           삭제하려는 경로에 파일이 존재하면 오류가 발생합니다.
           이러한 경우에는 Kill 문을 이용하여 먼저 해당 경로에 있는 모든 파일들을 완전히 삭제하세요.
        5. Kill 문:    디스크에서 지정된 파일들을 삭제합니다.
           Kill 문은 여러 파일을 지정하는 다중 문자 와일드카드(*) 문자와 단일 문자 와일드카드(?)의 사용을 지원합니다.
           Ex)   Kill "D:*.xls"   ' D: 루트에 있는 파일들중 확장자가 xls 인 모든 파일을 삭제합니다.
                   Kill "D:Tempa.xls"   ' D:Temp 폴더에서 a.xls 인 파일을 삭제합니다.
           참고) Kill 문은 열려있는 파일을 삭제하려할 경우에는 오류가 발생합니다.
        6. Name 문 :   파일 또는 경로의 이름을 변경합니다.
           Ex)   Name "C:TestmyFile.xls" As "C:TestmyTestFile.xls"
                   C:Test 폴더의 myFile.xls 파일을 myTestFile.xls 로 이름을 변경합니다.
                   Name 문을 이용하면 다른 경로로 이동도 가능합니다.
           Ex)   Name "C:SourceFoldermyFile.xls" As "C:TargetFoldermyTestFile.xls"
                  C:SourceFolder 폴더의 myFile.xls 파일을 C:TargetFolder 폴더로 이동하고 myTestFile.xls 로 이름을 변경합니다.

        7. FileCopy 문:   파일을 복사합니다.
           Ex)   FileCopy "C:SourceFoldermyFile.xls" , "C:TargetFoldermyTestFile.xls"
                   C:SourceFolder 폴더의 myFile.xls 파일을 C:TargetFolder 폴더에 myTestFile.xls 라는 이름으로 복사합니다.
           참고:열려있는 파일을 복사하면 오류가 발생합니다.
           열려있는 파일을 복사하려면 API 를 이용하여 복사할 수 있습니다. 방법은 팁 게시판의 열려있는 파일의 복사를 참고.

        ***************************************제어문****************************************************

        *반복문

        1. Do ... Loop 문   : 조건에 만족할때까지 실행(실행할 횟수가 명확히 정해지지 않은 경우)

        Do [{While | Until} 조건]
            [statements]
            [Exit Do]
            [statements]
        Loop

        또는 다음과 같은 구문을 사용할 수도 있습니다.

        Do
            [statements]
            [Exit Do]
            [statements]
        Loop [{While | Until} 조건]

        2. For ... Next 문 : 이미 실행할 횟수가 정해져 있을 때

        For counter= start To end [Step step]
            [statements]
            [Exit For]
            [statements]
        Next [counter]


        3. For Each ... Next 문  : 배열이나 컬렉션의 각 요소들에 대한 문의 그룹을 반복

        For Each element In group
            [statements]
            [Exit For]
            [statements]
        Next [element]


        4. While ... Wend 문


        * 조건문, 분기처리문

        1. IF 문


        2. SELECT CASE 문

        Select Case testexpression
            [Case expressionlist-n
                [statements-n]] ...
            [Case Else
                [elsestatements]]
        End Selec


        3. ON...GOSUB 문


        4. ON...GOTO 문


        5. GOSUB ... RETURN 문


        6. GOTO 문

        <cf. 분기문과 비슷한 효과를 내는 함수>

        1. IIF 함수


        2. SWITCH 함수


        3. CHOOSE 함수


        * 개체를 위한 특수 명령문

        1. For each문

        2. with 문


        ****************************************** 프로시저 *****************************************

        2. 프로시저 작성 방법
        1) Sub 문
        2) Function 문

        *Procedure : Sub Procedure  : 일반적인 처리 
                           Function Procedure: 함수.  어떠한 값을 입력하면 계산을 통하여 결과를 출력.
                           Property Procedure: 사용자가 속성을 만들거나 저장 ( 일반적으로 잘 사용안됨)

        *사용자 정의 폼

        1. 해당 문서 (마우스 오른클릭)>  삽입 > 사용자 정의 폼   or     메뉴의 삽입 > 사용자 정의 폼
        2. 폼과 도구 상자가 나타남.


         

        ******************************************  함수  ********************************

        * 날짜 시간함수

        1. Now 함수 : 현재 시스템의 날짜와 시간을 반환합니다.
        2. Date 함수 : 현재 시스템의 날짜를 반환합니다.워크시트 함수의 Today 와 같습니다.

        Sub Date_Time_Ex()
              Dim Date_Time As Date
              Date_Time = Now
              MsgBox "년 : " & Year(Date_Time) & vbCr & _
                           "월 : " & Month(Date_Time) & vbCr & _
                           "일 : " & Day(Date_Time) & vbCr & _
                           "시 : " & Hour(Date_Time) & vbCr & _
                           "분 : " & Minute(Date_Time) & vbCr & _
                           "초 : " & Second(Date_Time)
              End Sub

        DateValue 함수
        TimeValue 함수
        Weekday 함수
        MonthName 함수
        WeekdayName 함수

        DateSerial 함수: 지정된 년, 월, 일의 날짜 값을 반환합니다.
        TimeSerial 함수 특정 시, 분, 초에 대한 시간을 나타내는 Variant (Date) 값을 반환 DateAdd 함수  :  특정 시간 간격을 더한 날짜 값을 반환 DateDiff 함수  : 두 날짜 사이의 시간 간격을 계산합니다. 결과는 Long 형식입니다
        DatePart 함수  :주어진 날짜의 지정된 부분을 포함하는 Variant(Integer) 값을 반환

        * 수학함수

        1. Abs 함수 : 수의 절대값을 구합니다.
        2. Int 함수 : 수를 가까운 정수로 내립니다.  (음수인 경우에는 더 작은 숫자로 환산됨을 주의 ) 3. Fix 함수 : 숫자의 소수점 이하를 버리고 정수로 변환합니다.(TRUNC 함수와 동일)
        4. Rnd 함수: 0보다 크거나 같고 1보다 작은 수의 난수를 발생. (RAND 함수와 동일)
        5. Sgn 함수 : 숫자의 부호를 반환합니다.(음수이면 -1, 0 은 0을 양수이면 1을 반환합니다)

        - 삼각 함수  Cos 함수 /  Sin 함수 /  Tan 함수
        - 기타 함수  Exp 함수 / Log 함수 /  Sqr 함수


        *String관련함수

        InStr 함수:  한 문자열 안에 특정 문자열이 처음으로 나타난 위치를 지정하는 Variant(Long) 값을 반환
                          ex) InStr("ABC", "B")   ---> 2

        Mid 함수: 한 문자열에서 지정된 수의 문자를 포함하는 Variant(String) 값을 반환합니다.
        Left 함수: 문자열 왼쪽부터 지정된 수 만큼의 문자를 포함하는 Variant(String) 값을 반환합니다.
        Right 함수: 문자열의 오른쪽으로부터 지정된 수의 문자를 포함하는 Variant(String) 값을 반환합니다.

        **************************VBA 프로그래밍하는 순서********************************

        ① 마우스로 원하는 윈도우를 그린다. (콘트롤 작성)
        ② 버튼, 텍스트 박스등의 속성을 지정한다. (속성 지정)
        ③ 연계된 사건(Event)에 대한 코드를 작성한다. (코딩)

      •  

        ------------------------------------------------------------

        참조

        김형백  http://soongin.new21.net/
        허성덕  http://uno21.com/
        엑사모  http://www.excellove.com
        i엑셀러 http://www.iexceller.com/



      댓글 '2'

      [레벨:1]최종원

      2012.08.07 01:14:20
      *.55.53.238

      정말 정리가깔끔합니다.... 감사합니다 !

      김진승

      2016.06.10 15:20:58
      *.46.20.144

      공부에 참고 하겠습니다! 감사합니다..!

      문서 첨부 제한 : 0Byte/ 2.00MB
      파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
      List of Articles
      번호 제목 글쓴이 날짜 조회 수
      공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 33821
      65 기타 [펌] 한글을 자음 모음으로 나누기 + 합치기(초성,중성,종성) [레벨:30]아별 2022-03-22 2375
      64 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 _ 윈도우 도움말 file [레벨:30]아별 2017-04-21 39351
      63 기타 [VBA] 컴퓨터 이름 알아내기 등 PC 환경 변수 읽오이기.. Environ [레벨:30]아별 2015-04-08 4400
      62 기타 [VBA] 엑셀 파일을 PDF로 저장(EXPORT) 시키기 [1] [레벨:30]아별 2015-01-21 7346
      61 기타 [펌] 추가 기능 개발시 리본메뉴에 넣을 MSO Image 쉽게 확인하기 imagefile [레벨:30]아별 2015-01-09 3433
      60 기타 엑셀 2013에서 웹 브라우저 컨트롤(ActiveX, web browser)을 시트에 삽입할 수 없는 문제.. imagefile [레벨:30]아별 2014-01-19 7315
      59 기타 [ VBA Tip ] 엑셀 VBA로 사진(JPG)의 EXIF 정보(GPS 포함) 불러 들이기.. imagefile [6] [레벨:30]아별 2012-02-27 7889
      58 기타 VBA로 인디언식 이름 만들어주는 사용자 정의 함수 만들기.. imagefile [1] [레벨:30]아별 2012-01-11 5604
      57 기타 오피스2010 64bit(64비트)를 위한 API Declare 방법 file [2] [레벨:30]아별 2011-10-05 9219
      56 기타 [펌] VBA 공부를 시작하시는분들에게 추천하는 강의자료 imagefile [4] [레벨:30]아별 2011-03-21 13698
      55 기타 VBA _ 레지스트리 다루기 ( registry control ) imagefile [레벨:30]아별 2011-03-19 8672
      54 기타 엑셀에서 소리 내기(재생) _ sound play file [1] [레벨:30]아별 2010-12-13 7390
      53 기타 헷갈리기 쉬운 워크시트 함수와 VBA함수 비교표 imagefile [레벨:30]아별 2010-10-05 6637
      52 기타 기본 제공 대화 상자 실행하면 초기 값 설정 imagefile [레벨:30]아별 2010-08-25 6328
      » 기타 [펌] 엑셀 VBA 총정리 _ Excel 개체 모델 참조 등 image [2] [레벨:30]아별 2010-03-09 15923
      50 기타 [링크] VBA로 파일을 다루는 방법에 대한 강좌들을 모아놓은 겁니다. [레벨:30]아별 2010-03-03 9833
      49 현재 엑셀 파일의 색상표(Color Chart) 확인용 코드 [레벨:30]아별 2009-12-24 7173
      48 [펌] Visual Basic (비쥬얼 베이직) 함수 정리 imagefile [레벨:30]아별 2009-11-27 20069
      47 엑셀 사용자 정의 수식(UDF)에 도움말 넣는 방법. [레벨:30]아별 2009-11-11 5778
      46 Excel에서 메뉴 및 메뉴 모음을 사용자 지정하는 방법 image [레벨:30]아별 2009-11-04 7329