[Uipath] uipath에서 만든 배열을 엑셀 매크로 인수로 보내는 법

2021. 8. 25. 15:52RPA

uipath에서 엑셀 매크로를 쓸 때 두가지 방법이 있다.

사용하는 엑셀 파일에 매크로 코드 자체를 넣어놔서

위처럼 Execute Macro 액티비티를 사용하던가

 

아님 매크로 코드가 들은 txt파일(꼭 저장시 인코딩을 ANSI로)  같은 것을 excel scope 안에서 invoke VBA 액티비티를 사용하여 수행시킨다

 

요로콤

이때 배열을 집어넣고싶은데 잘 모를수도 있다

보통은 아웃풋이 있을때 Function 아니면 Sub를 사용하는데

Sub Main(Arg As String)

~ 대충 코드 ~

End Sub

이런식의 코드가 완성된다.

위는 Main이라는 함수를 실행하려면 String 인수를 하나 받아야한다는 것인데

(그래서 무슨 액티비티를 쓰던  속성 창에서 Parameters 안에 {String인수} 를 넣어줘야 한다.

여러개 받으면 {String 인수,String 인수} 이런식으로 중괄호 안에 다 넣어주면 됨)  

 

여기서 Arg를 Arg()로 바꾸면 String 타입의 배열을 넘겨받을 수 있다. (요점)

나는 평소에 Argument가 제대로 됐는지 확인하기 위하여 인수를 한개씩 넘기는 편인데 (Write Line으로 찍고 수행 찍고 수행..)

배열을 넘기는 법을 알았으니 모르는 사람을 위해 기록한다.

 


TEST 하는 법

 

Assign을 이용해 String 배열 하나 정의한다.

StringArr = new String(1){"ㄱ","ㄴ"}

다들 알겠지만 (원하는 배열 개수) -1을 소괄호에 넣어주면 된다. 나는 ㄱ이랑 ㄴ 두개만 넣어줄거라 1 들어간거고

나처럼 기본 값 정의 안해줄거면 {}만 쓰면 됨

하지만 배열은 크기가 변하지 않기 때문에 배열크기(숫자)는 꼭 넣어줘야한다.

 

그리고 테스트할 excel scope 안에 invoke VBA 넣고 test.txt를 짜자

나의 test.txt는 아래와 같다.

Sub Main(StringArr() As String)
	Cells(1,1) =StringArr(0)
	Cells(2,1) =StringArr(1)
End Sub

진짜 확인용이다.. 누구던 알아볼 수 있겠지..

A1 칸에 배열의 첫 값, A2칸에 배열의 두번째 값을 쓰는 것이다.

제대로 된다면 ㄱ,ㄴ이 써질 것이다.

 

StringArr의 변수 유형(string 배열)
invoke VBA 액티비티의 설정창이다.

위와 같이 Uipath의 StringArr 변수를 invoke VBA 액티비티의 파라미터 변수로 넣어준다.

그리고 수행 누르면 

요렇게 배열 안의 값이 하나씩 잘 들어가있다.

끄읏