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