제가 VB도 Uipath 도 처음이라 정말 단순히 필터 후 화면에 보이는 Row를 삭제하는 내용입니다.
VB 코드도 여러개 구해서 해 봤는데, 엑셀에서 매크로에 코드 넣고 실행하면 정말 잘 작동하는데,
UiPath에서 invoke VBA 하면 헤더 Row 빼고 다 삭제를 해 버립니다. ㅜㅜ 처음 작성하면 첨부가 안된다고 해서 코드를 그냥 넣어드립니다(이것도 여러 코드중 하나 입니다.)
Sub FilterDelete()
Application.DisplayAlerts = False
Application.ScreenUpdating = Flase
Range("A1").AutoFilter Field:=9, Criteria1:= _
"<>*설치공사*", Operator:=xlAnd, Criteria2:="<>*SI*"
Range("A2:A10000").EntireRow.Delete
'Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").AutoFilter
Range("A1").AutoFilter Field:=5, Criteria1:="<>" & "수의"
Range("A2:A10000").EntireRow.Delete
'Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1").AutoFilter
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
한가지 의문이 드는 것은 Excel application scope Activity 에서 파일 지정해 주고 Invoke VBA 한 다음 속성에서 EntryMethodParameters 에 아무것도 넣지 않았습니다.
EntryMethodNeme 는 위 Code 의 FilterDelete 룰 넣었구요.
필터내용은
- 9번째 컬럼에서 “설치공사” 나 “SI” 가 들어가지 않은 Row를 선택하고 모두 삭제.
- 5번째 컬럼에서 "수의"가 아닌 Row를 선택하고 모두 삭제
- 필터 해제
전문가 분들의 조언 부탁드리며 위 코드보다 간략한 코드나 Activity 방법 추천 부탁드립니다.
참고로 작업할 엑셀파일은 매크로파일(xlsm)을 사용할 수 없는 제한이 있습니다.