IT 관련 지식/VBA 공부에 해당하는 글 30

기초부터 실전까지 VBA 엑셀 23 - 북 열기(Open)

IT 관련 지식/VBA 공부|2019. 11. 19. 08:00
반응형
728x170

<VBA 엑셀 23 - 북 열기(Open)>

 

이번에는 VBA를 이용하여 다른 엑셀을 여는 방법에 대해 적어보겠습니다.

 

이 기능을 이용하면 여러 가지 모드(읽기, 쓰기 전용 모드 등)로 읽을 수 있으며 아직 열려있지 않은 엑셀을 열기 때문에 다른 엑셀과 연계, 데이터 참조를 하기에도 매우 유용합니다.

 


1. VBA WorkBooks.Open의 기본형

 

Workbooks.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

 

이번 기본형 구문의 메소드는 조금 많습니다 ㅎㅎ;;;

 

그럼 각 구문에 대해 설명을 드릴 건데요. 전부는 아니고 주로 사용하는 기능에 대해서만 설명을 드리겠습니다.

 

이름 설명
FileName 실행할 엑셀의 파일 이름.
UpdateLinks 파일의 외부 참조 (링크)의 업데이트 방법을 지정합니다.
ReadOnly 책을 읽기 전용 모드로 열려면 True를 지정합니다.
Password 암호로 보호 된 통합 문서를 여는 데 필요한 암호를 지정합니다.
WriteResPassword 쓰기 보호 된 통합 문서에 기록하는 데 필요한 암호를 지정합니다.

 

이제 각각의 매소드가 의미하는 바를 알려드리겠습니다.

 

FileName

일반적으로 엑셀 파일의 전체 경로를 지정합니다.
FileName : = "C : \ User \ sample.xls"
이와 같이 지정합니다.

 

 

만약 매크로를 쓰고있는 책과 동일한 폴더 라면
FileName : = Thisworkbook.Path & "\ sample.xls"
이와 같이 지정합니다.(여기서 sample.xls는 현재 VBA와 같은 위치의 다른 파일을 의미)
Thisworkbook.Path

위와 같이 지정하면 현재 열려있는 파일의 주소(디렉터리)를 의미합니다.

 

 

UpdateLinks

외부 참조 (링크)이있는 북을 열려고 하면
링크의 업데이트 방법을 묻는 메시지가 사용자에게 표시됩니다.
0 : 외부 참조 (링크)를 업데이트하지 않습니다.
3 : 외부 참조 (링크)를 업데이트합니다.

 


UpdateLinks : = 0
이제 링크가 업데이트되지 않고 통합 문서가 열립니다.
0  False 로 표기 일도 있지만 VBA에서는 False = 0입니다.

 

 

ReadOnly

ReadOnly : = True
파일을 읽기 전용으로 엽니다.

 

 

Password, WriteResPassword

암호로 보호된 통합 문서를 열 경우,
Password : = "읽기 암호"
WriteResPassword : = "쓰기 암호"
이렇게 하면 암호 입력이 나오지 않게 됩니다.

 

300x250

 

다음으로 사용하는 방법에 대해 알아보겠습니다. 

 


Workbooks.Open Filename : = "C : \ Test \ sample.xls"UpdateLinks : = 0, ReadOnly : = True

 

위의 VBA를 실행하면 다음과 같은 설정으로 파일을 열게 됩니다.

  • 링크 업데이트하지 않음
  • 읽기 전용 모드로 열기

이를 앞에서 배운 With과 Set을 연계하여 사용할 수 있습니다.

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 20 - with 구문

 

기초부터 실전까지 VBA 엑셀20 - with 구문

이제부터는 조금 어려운 단계의 프로그래밍을 배워보도록 하겠습니다. 코딩에서 나쁜 행동중 하나는 바로 반복입니다. 우리는 반복을 피하기 위하여 For, Do~Loop 같은 반복문을 배웠습니다...

mmol.tistory.com

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\User\sample.xls")

이렇게 하면 "wb"를 입력하는 것만으로도 긴 구문을 사용하지 않고 간단히 사용할 수 있습니다.

 


오늘은 이렇게 VBA의 Open 기능에 대해 알아봤습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 1 - 매크로 사용 준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀 14 - 메시지 박스 MsgBox

 

일본에서 이야기하는 한국 뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가 간 약속 지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀22 - On Error

IT 관련 지식/VBA 공부|2019. 11. 16. 23:30
반응형
728x170

<VBA 엑셀22 - On Error>

 

이번에는 VBA에서 에러(Error)가 발생했을 때 어떻게 처리를 할 수 있는지에 대해 알려드리겠습니다.

 

프로그래밍을 하다 보면 에러는 실수로 나올 수 도 있고 무언가 부족하여 나올 수 도 있습니다.

 

그때 이 에러를 어떻게 다룰 것인가가 프로그래밍에서 중요한 영향을 끼칩니다.

 

그럼 하나씩 알아보겠습니다.

 


1. VBA On Error의 기본형태

 

특정한 구문을 실행 한 뒤 에러가 나올 수 있는 곳에 On Error를 사용한다면 그 에러에 대해 어떻게 대처할 것인지 설정할 수 있습니다.

 

참고로 여기서 말하는 에러는 VBA를 실행했는데 나오는 모든 에러를 의미합니다.

 

On Error GoTo 행 레이블

 

On Error Resume Next

 

On Error GoTo 0

 

이제 각각이 무엇을 의미하는지 설명드리겠습니다.


On Error GoTo 행 레이블

오류가 발생하면 행 레이블의 위치로 제어가 이동합니다.

 

On Error Resume Next

오류가 발생하면 오류가 발생하더라도 무시하고 계속합니다.

 

On Error GoTo 0

현재 프로 시저에 포함 된 사용 가능한 오류 처리 루틴을 해제합니다.
On Error GoTo 0 문을 지정하지 않은 경우 프로 시저가 종료 될 때 자동으로 비활성화됩니다.

 

제일 마지막 구문의 이해가 조금 어려울 것이라고 생각하는데요.

 

예문을 통해 쉽게 보겠습니다.

 

300x250

2. VBA On Error의 예문

예문의 경우 제일 아래에 사용한 코드를 남겨놓겠습니다.

 

① On Error Go To 와 Go To 0

 

이 둘은 다음과 같이 사용할 수 있습니다.

Sub Sample()

    On Error GoTo Label01
    
    '여기서 에러가 발생했을 경우 Label01로 이동
    
    On Error GoTo 0
    
    '여기서 에러가 발생했을 경우 VBA 종료
    
    Exit Sub
    
Label01:
    '에러 발생시의 처리

End Sub

 

하나씩 분석해보자면

 

GoTo Label01의 하단 구문에서 경우 에러 발생 → Label01의 부분으로 이동

 

GoTo 0의 하단 구문에서 에러 발생 → VBA 바로 종료

 

이렇게 됩니다.

 

그럼 하나의 예문을 더 보겠습니다.

 

Sub sample1()
    On Error GoTo Label01
    Call sample2
    Call sample3
    Exit Sub
Label01:
    MsgBox "Label01"
End Sub

Sub sample2()
    On Error GoTo Label02
    Dim i As Long
    i = "abc"
    Exit Sub
Label02:
    MsgBox "Label02"
End Sub


Sub sample3()
    On Error GoTo 0
    Dim i As Long
    i = "abc"
    Exit Sub
Label03:
    MsgBox "Label03"
End Sub

 

조금 긴 문장입니다 ㅎㅎ

 

하나씩 해석해드리겠습니다

 

제일 좋은 방법은 VBA를 켜서 위 문장을 다 적으신 후 Sample1 부터 하나씩 컴파일을 해보는 것입니다.

 

한줄씩 컴파일 하는 방법은 "F8"을 누르시면 됩니다.

 

그렇게 해보면

 

Sample1 실행 → Sample2 소환 Sample2구문 실행 → 오류 발생 → Label02 실행 → Sample3 실행 → 에러 발생 → Sample3 종료 → Label01 실행 매크로 종료

 

이와 같이 실행됩니다.

 

다음으로 On Error Resume Next를 보고 예문을 마치겠습니다.

 

②  On Error Resume Next

 

Sub sample4()

Dim i As Long
On Error Resume Next
i = "ABC"

End Sub

 

만약 위의 코딩에서 On Error Resume Next이 없다면 변수 i에 "ABC"를 넣는 순간 에러가 발생할 것입니다.

 

하지만 On Error Resume Next가 있기때문에 이를 무시하고 다음으로 진행하여 sample4 구문을 종료합니다.

 


오늘은 이렇게 VBA에서 On Error라는 함수를 알아봤습니다.

 

프로그래밍에서 에러를 다루는 일은 중요하니 꼭 알아두면 좋은 내용입니다.

 

On Error02.txt
0.00MB
On Error01.txt
0.00MB

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀21 - PasteSpecial

IT 관련 지식/VBA 공부|2019. 11. 14. 08:00
반응형
728x170

<VBA 엑셀21 - PasteSpecial>

 

이번에는 특별한 붙여넣기 PasteSpecial에 대해 알아보겠습니다.

 

이 기능은 셀의 내용을 복사 or 잘라내여 붙여넣을 때

 

셀의 내용의 일부만 붙여넣을 수 있는 기능입니다.

 

예를 들면 수식이 아니라 그 "값"만 붙여넣거나 서식을 제외하고 수식만 붙여넣을 수 있는 기능입니다.

 


1. VBA PasteSpecial의 기본형과 매소드

 

PasteSpecial의 기본형태는 다음과 같습니다.

 

Range.PasteSpecial (Paste, Operation, SkipBlanks, Transpose)

 

그리고 각각의 매소드는 다음과 같은 기능을 포함하고 있습니다.

 

이름  지정 값 설명
Paste  xlPasteAll 모두 붙여 넣습니다.
 xlPasteAllExceptBorders 윤곽 제외한 모든 붙여 넣습니다.
 xlPasteColumnWidths 복사 한 열 너비를 붙여 넣습니다.
 xlPasteComments 코멘트를 붙여 넣습니다.
 xlPasteFormats 서식을 붙여 넣습니다.
 xlPasteFormulas 수식을 붙여 넣습니다.
 xlPasteFormulasAndNumberFormats 수식 및 숫자 서식을 붙여 넣습니다.
 xlPasteValues 값을 붙여 넣습니다.
 xlPasteValuesAndNumberFormats 값 및 숫자 서식을 붙여 넣습니다.
Operation  xlPasteSpecialOperationAdd 복사 된 데이터는 대상 셀의 값에 추가됩니다.
 xlPasteSpecialOperationDivide 복사 된 데이터는 대상 셀의 값으로 나눗셈됩니다.
 xlPasteSpecialOperationMultiply 복사 된 데이터는 대상 셀의 값에 곱셈됩니다.
 xlPasteSpecialOperationSubtract 복사 된 데이터는 대상 셀의 값에 뺄셈됩니다.
 xlPasteSpecialOperationNone 붙여 넣기 작업으로 계산되지 않습니다.
SkipBlanks  변형 (Variant) 클립 보드에있는 빈 셀을 붙여 넣기 대상으로하지 않도록하려면 True를 지정합니다.
기본값은 False입니다.
Transpose  변형 (Variant) 붙여 넣기 할 때 데이터의 행과 열을 바꾸려면 True를 지정합니다.
기본값은 False입니다.

 

사실 위에 있는 표의 기능을 전부 사용하지는 않습니다.

 

그래서 자주 사용하는 것만 말씀드리자면

 

① Paste의 xlPasteFormats, xlPasteFormulas, xlPasteValues

 

② Transpose의 Ture / False 

 

이 두 개정도만 외워두시면 사용하는데 큰 지장이 없을거라 생각됩니다.

 

그럼 다음으로 예문을 살펴보겠습니다.

 


2. VAB PasteSpecial의 예문

300x250

① 각 매소드는 ,(쉼표)를 이용하여 구분합니다.

② 각 매소드는 순서대로 적용하여야 합니다 (Paste → Operation → SkipBlanks → Transpose)

③ 단, 처음 적용하는 Paste의 경우에는 ,(쉼표)가 아니라 띄워쓰기로 사용합니다.

④ 복사한 셀과 붙여넣는 셀이 겹치면 안됩니다.

Range("A1:A10").Copy
Range("A11").PasteSpecial Paste:=xlPasteValues, Transpose:=True

위와 같이 코딩한 후, 아래와 같은 표를 만듭니다.

VBA를 실행하기 전

그리고 VBA를 실행시켜보면 다음과 같이 됩니다. 

"A11"에 행과 열이 바뀌어서 붙여넣기가 된 것을 볼 수 있습니다.

 

이렇게 행과열을 바꿀 수 있는 코딩도 만들 수 있습니다.

 


오늘은 이렇게 VBA의 PasteSpecial에 대해 알아봤습니다.

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()

기초부터 실전까지 VBA 엑셀20 - with 구문

IT 관련 지식/VBA 공부|2019. 11. 13. 08:00
반응형
728x170

<VBA 엑셀20 - with>

 

이제부터는 조금 어려운 단계의 프로그래밍을 배워보도록 하겠습니다.

 

코딩에서 나쁜 행동중 하나는 바로 반복입니다.

 

우리는 반복을 피하기 위하여 For, Do~Loop 같은 반복문을 배웠습니다.

 

하지만 이번에는 코딩을 더욱 간략하게 하는 With 이라는 구문에 대해 배워보겠습니다.

 


1. VAB With의 기본형

 

다음은 With의 기본 사용법입니다.

 

With 오브젝트
  .오브젝트 = 값 
  .메소드 
End With

 

300x250

아마 이렇게만 보시면 이해가 잘 가지않으리라 생각합니다.

 

그래서 바로 예제로 설명을 해보겠습니다.

 


2. VBA With의 예문

 

다음은 결과가 같은 예문을 한쪽은 With구문을 사용하지 않고

 

다른 한쪽은 With 구문을 사용하여 표현해보겠습니다.

 

아래의 코딩은 With 구문을 사용하지 "않은" 코딩입니다.

Worksheets(1).Cells(1, 1) = 1
Worksheets(1).Cells(2, 1) = 2

 

다음은 With 구문을 "사용한" 예문입니다.

With Worksheets(1)
  .Cells(1, 1) = 1
  .Cells(2, 1) = 2
End With

 

둘 다 Sheet(1)의 "A1", "B1"에 각각 "1", "2"를 넣는 코딩이지만

 

그 과정이 조금 다릅니다.

 

위의 예문의 경우 조금 짧기 때문에 With 구문을 사용한 예문이 좀 더 복잡하게 보입니다.

 

그럼 실제로 사용하는 예를 한번 보겠습니다.

With Range("A1").Font
  .Bold = True
  .Color = vbRed
  .Size = 12
End With

이번에는 좀 더 확 와닿을거라 생각합니다.

 

우리는 With Range("A1").Font만 보고 이제부터 "A1"의 Font에 대해 뭔가를 설정할 것이라는 것을 알 수 있습니다.

 

그리고 그 설정은 Bold / Color / Size라는 것도 알 수 있습니다.

 

이 처럼 With 구문을 사용할 때에는 한개의 오브젝트(Range("A1").Font)에 여러개의 매소드(.Bold 등)를 사용할 때 효과적이라는 것을 알 수 있습니다.

 

또한 With 구문을 사용할 경우 프로그래밍의 처리속도도 빨라지게 됩니다.

 

단, 사용하는 매소드가 적은데 With 구문을 사용할 경우 오히려 가독성이 떨어지게 됩니다.

 

또한 With 구문을 사용했을 경우에는 마지막에 "End With"을 반드시 적어야합니다.


오늘은 여기까지 하겠습니다.

 

다음에는 붙여넣기의 새로운 방법에 대해 알아보겠습니다.

(보니까 포스팅 하는 것을 까먹었더라고요....)

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()