Thief of Wealth
Published 2020. 9. 26. 22:42
VBA 기초 간단정리 개발/RPA

이미 몇년전에 잠시 배우고 더이상 안써본 언어이지만, 지원하고 싶은 회사의 직무가 생겨서 도전적인 마음으로 다시 복습에 임한다!

 

솔직히 VBA보단 python이 훨씬 편하지만 다시 복습해두면 나중에라도 다시 필요해질때 유리할것이라는 판단이든다.

 

이글은 wikidocs.net/43982 를 기반으로 작성되었다.

 

주로 google spread sheet를 이용하나 VBA라기보다는 매크로 녹화를 통해 javascript 변환을 하고 실행시켜주는 구조라서 VBA를 배우기 어렵기 때문에 정석대로 MS Excel을 통해 작성한다. 다행히 이번에 첫 지급받은 업무용기기에 ms office가 자동으로 깔려있었다.

 

* Mac에서 ms office VBA 에디터는 자동완성을 지원하지 않는것같다.

 

- Sub ~ End Sub

VBA의 함수 선언이다. 매크로를 실행할때 모듈내에서 함수를 선택하여 사용할 수 있다. 각 Sub는 프로시져라고도 불린다.

 

ex)

Sub test()

    Range("A1").Value = "123"

    Debug.Print ("콘솔출력")

End Sub

 

Sub test2()

    Range("A2").Value = "12344"

End Sub

 

* VBA에서 문자열은 ""를 사용해야 한다. ''를 사용하면 에러.

* F5를 누르면 매크로를 실행할 수 있다.Mac의 경우  Fn+F5누르면 F5가 정상적으로 눌려짐

* 코드는 윗줄부터 실행된다.

 

 

- 변수들로 타 프로그래밍 언어처럼 사용할 수 있으며, &로 이어붙이기가능 및 str() 함수를 통해 문자열로 바꿀 수 있다.

ex)

Sub test()

a = 2

b = 3

Debug.Print a + b

c = 3

c = Str(c)

Debug.Print "안녕하세요" & a

End Sub

 

- if-then/elseif-then/else

ex)

Sub test()

 

Dim a As Boolean

Dim b As Boolean

a = True

b = False

 

If (a = False) Then '=로도 비교연산가능'

    Debug.Print "a is " & True

ElseIf (b <> True) Then '<>는 같지 않다는 뜻'

    Debug.Print "b is " & False

ElseIf (a = False And b <> True) Then '논리연산은 and, or 사용가능'

    Debug.Print "b is " & False

ElseIf (a = True Or b <> True) Then

    Debug.Print "b is " & False

Else 'Else는 Then이 붙지 않음'

    Debug.Print "Nothing"

End If

 

End Sub

 

- Do While

ex)

Sub test()

 

i = 0

Do While (i < 5)

    Debug.Print ("안녕!")

    i = i + 1

Loop 'Loop를 사용'

 

End Sub

 

- For

ex)

Sub test()

 

For i = 1 To 10

  For j = 1 To 5

        Debug.Print ("i = " & i & " j=" & j)

  Next j

Next i

 

End Sub

 

 

-셀값, 색상바꾸기

ex)

Sub test()

 

Cells(1, 1).Value = 4

Cells(1, 1).Interior.ColorIndex = 3

 

End Sub

 

- Sub Call/Callee

 

ex)

Sub T()

 

    이름 = "철수"

    Call 멘트(1, 이름)

 

    이름 = "영희"

    Call 멘트(2, 이름)

 

End Sub

 

Sub 멘트(i, 이름)

 

    Debug.Print ("안녕하세요")

    Debug.Print ("셀에 이름을 입력하겠습니다.")

 

    Cells(1, i).Value = 이름

 

End Sub

 

이것만 알아도 왠만한 자동화는 쉽게 할 수 있을 것이다.

 

하지만 데이터가 많을 때의 효율성을 위해서, Collection과 같은 자료형을 배워야한다고 판단.

추후에 포스팅하도록 한다.

 

'개발 > RPA' 카테고리의 다른 글

[Selenium] shadow DOM 크롤링 하는법  (2) 2020.10.04
RPA와 매크로 차이점  (0) 2020.09.20
profile on loading

Loading...