Excel 매크로 VBA를 Power Automate로 이행하다 ── Office Scripts로 대체할 범위와 VBA로 남겨둘 범위

· · Power Automate, VBA, Excel, Office, Office Scripts, 업무 자동화, 클라우드 플로우, 기존 자산 활용, 이행, 기술 상담

“이 업무, Excel 매크로로 돌아가고 있는데, 만든 사람이 이제 회사에 없어서요. Power Automate라는 것으로 이행할 수 있는 건가요”──이런 상담을 자주 받습니다. VBA로 짜인 일별 집계나 장표 작성이 현역으로 동작하고 있는 한편, 작성자의 퇴사나 VBScript 폐지 뉴스를 계기로 VBA 자산의 장래성에 불안을 느끼는 담당자분이 많습니다.

먼저 결론부터 말하면, “VBA를 Power Automate로 이행한다”는 정확히는 “VBA의 일부를 Office Scripts로 다시 작성해 Power Automate에서 호출한다”, “일부는 커넥터로 대체한다”, “일부는 VBA로 그대로 남긴다”는 여러 이야기의 조합입니다. VBA 매크로를 그대로 클라우드 플로우에서 동작시키는 구조는 존재하지 않습니다. 이 글에서는 어떤 처리를 어디로 이행할 수 있고, 어디는 VBA로 남겨야 하는지를 Microsoft Learn의 1차 정보로 확인하면서 정리합니다.

1. 먼저 결론

  • VBA 매크로를 Power Automate의 클라우드 플로우에서 직접 실행할 수는 없습니다. Excel Online (Business) 커넥터는 .xlsm 파일을 다룰 수 있지만, 그 안의 매크로는 실행할 수 없으며 실행할 수 있는 것은 Office Scripts뿐입니다.1
  • Office Scripts는 VBA의 완전한 대체물이 아닙니다. Excel 전용이며, 다른 Office 앱 조작·이벤트 구동·UserForm·COM/OLE 연계·로컬 파일 접근은 할 수 없습니다.23
  • 반대로, 워크북 안에서 완결되는 정형·집계·전기 처리는 Office Scripts화할 가치가 큽니다. Power Automate와 조합하면 예약 기동이나 메일 수신을 트리거로 한 자동 실행이 가능해지고, VBA로는 불가능했던 “Excel을 열지 않고도 동작하는 자동화”가 됩니다.2
  • 테이블에 행을 추가·조회하는 정도라면 스크립트를 작성하지 않고도 Excel Online (Business) 커넥터의 액션으로 직접 처리할 수 있습니다. 다만 테이블 필수·기본 256행·최대 25MB 등의 제한을 먼저 확인하세요.4
  • 아무래도 VBA가 필요한 처리는, 데스크톱 플로우의 Run Excel macro 액션으로 기존 VBA를 그대로 실행하는 선택지가 있습니다. VBA를 다시 작성하지 않고 실행과 전후 연계만 자동화할 수 있습니다.5
  • Office Scripts에는 상용 또는 교육용 Microsoft 365 라이선스와 OneDrive for Business가 필요합니다. VBA는 추가 라이선스가 필요 없으므로, 이 부분이 이행 판단의 전제 조건이 됩니다.62

2. VBA·Office Scripts·Power Automate의 관계를 정리하다

먼저 등장인물을 정리합니다. 비슷한 이름이 많아, 이 부분이 혼란의 원인입니다.

데스크톱 측클라우드 측Run script행 추가/조회/업데이트Run Excel macro호출Power Automate데스크톱 플로우기존 VBA 매크로Power Automate클라우드 플로우Excel Online Business커넥터Office ScriptsTypeScript로 Excel 조작Excel 테이블OneDrive / SharePoint 상의 워크북로컬/파일 서버 상의 워크북
  • Office Scripts(Office 스크립트)는 TypeScript로 Excel을 조작하는 스크립트 기능입니다. Excel의 웹판·Windows판(버전 2210 이후)·Mac판에서 동작하며, Power Automate의 클라우드 플로우에서 호출할 수 있습니다. VBA와의 근본적인 차이는 VBA가 데스크톱용, Office Scripts가 클라우드·크로스 플랫폼용으로 설계되어 있다는 점입니다.26
  • Excel Online (Business) 커넥터는 OneDrive for Business나 SharePoint상의 Excel 파일을 클라우드 플로우에서 조작하는 커넥터입니다. 테이블에 대한 행 조작 액션과, Office Scripts를 실행하는 “스크립트의 실행(Run script)” 액션을 가지고 있습니다.7
  • 데스크톱 플로우(Power Automate for desktop)는 Windows상의 앱을 조작하는 RPA입니다. Excel 액션 그룹 안에 VBA 매크로를 실행하는 액션이 있습니다.5

VBA로는 가능하고 Office Scripts로는 불가능한 것

이행 판단에서 가장 중요한 부분이 여기입니다. Microsoft Learn의 “Differences between Office Scripts and VBA macros”를 바탕으로 정리합니다.2

VBA로 가능한 것 Office Scripts에서의 취급
Word·Outlook·Access 등 Excel 이외의 Office 앱 조작 불가. Office Scripts는 Excel 전용으로, 다른 Office 앱에서는 이용할 수 없음
COM / OLE에 의한 다른 앱·외부 컴포넌트 연계, Win32 API 호출(Declare) 불가. 스크립트는 워크북에만 접근할 수 있으며, 호스트 머신에는 접근할 수 없음
Workbook_Open, Worksheet_Change 등의 이벤트 구동 불가. Excel 레벨의 이벤트는 지원되지 않으며, 실행 수단은 수동 실행이나 Power Automate에서의 호출뿐
UserForm에 의한 독자적인 대화상자·입력 화면 불가. 워크북 이외의 UI(대화상자나 작업 창)가 필요한 경우는 Office 애드인의 영역3
로컬 폴더의 파일 조작(열기·저장·목록 가져오기) 불가. 워크북 밖으로 나가는 처리는 Power Automate 쪽의 커넥터(OneDrive, SharePoint 등)로 수행
데스크톱판 Excel 고유 기능을 포함한 폭넓은 Excel 기능 일부 불가. VBA 쪽이 Excel 기능의 커버 범위가 넓으며, Office Scripts는 웹판 Excel의 시나리오를 대체로 커버하는 위치

외부 웹 서비스 호출에 대해서도 주의가 필요합니다. Office Scripts 자체는 제한적인 외부 호출을 지원하지만, Power Automate 경유로 실행한 경우 스크립트 안에서의 외부 API 호출(fetch)은 실패합니다. 외부 연계는 스크립트 안이 아니라 플로우 쪽의 커넥터나 HTTP 액션으로 수행하는 설계가 됩니다.26 다만 임의의 API를 호출하는 범용 HTTP 액션은 프리미엄 커넥터로 취급되기 때문에, Microsoft 365 라이선스만으로는 사용할 수 없습니다.8 연계 대상 서비스에 표준 커넥터가 마련되어 있다면 그쪽을 우선하고, 독자 API 호출이 필수라면 프리미엄 라이선스의 추가 비용을 이행 판단에 반영하세요.

이 목록을 보고 “우리 회사 매크로는 거의 다 걸린다”고 느낀 분도 많을 것입니다. 실제로 오랫동안 자라온 VBA 매크로는 Outlook에서의 메일 발송, 폴더 순회, UserForm에서의 입력 받기 정도를 흔히 포함하고 있습니다. 다만 포기하기 전에 처리를 분해해 보세요. “폴더에서 파일을 모아, 워크북을 정형하고, 메일로 보낸다”는 매크로라면, 파일 수집과 메일 발송은 Power Automate의 커넥터가 잘하는 일이고, 워크북 정형만 Office Scripts로 만들면 전체적으로는 이행할 수 있는 경우가 상당히 많습니다.

다시 작성하는 이미지 ── 집계 매크로를 대비해서 보기

말만으로는 거리감을 잡기 어려우므로 최소한의 예를 나란히 놓아 보겠습니다. “매출 시트의 C열(2행 이후)을 합계해 E1에 써낸다”는 것뿐인 처리입니다.

VBA라면 이렇게 작성합니다.

Sub 売上合計()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("売上")

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

    Dim total As Double
    total = Application.WorksheetFunction.Sum(ws.Range("C2:C" & lastRow))

    ws.Range("E1").Value = total
End Sub

같은 것을 Office Scripts(TypeScript)로 작성하면 이렇게 됩니다.

function main(workbook: ExcelScript.Workbook): number {
  const sheet = workbook.getWorksheet("売上");
  const used = sheet.getUsedRange();

  // getRowIndex는 0부터 시작하므로, 행 수를 더하면 1부터 시작하는 마지막 행이 된다
  const lastRow = used.getRowIndex() + used.getRowCount();
  const values = sheet.getRange(`C2:C${lastRow}`).getValues();

  let total = 0;
  for (const row of values) {
    const v = row[0];
    if (typeof v === "number") {
      total += v;
    }
  }

  sheet.getRange("E1").setValue(total);
  return total; // 플로우 쪽에서 받을 수 있는 반환값
}

행 수는 늘어나지만, 막히는 것은 문법이 아니라 다음 4가지 사고방식의 차이입니다.

VBA의 감각 Office Scripts에서는
Sub는 몇 개든 만들 수 있고, 어느 것부터든 실행할 수 있음 진입점은 main 함수 1개뿐. 이곳이 호출됨
ActiveSheet·Selection으로 “지금 보고 있는 곳”을 암묵적으로 사용할 수 있음 선택 상태라는 개념이 없음. workbook.getWorksheet("売上")처럼 반드시 이름으로 가져옴
Application.WorksheetFunction으로 워크시트 함수를 빌릴 수 있음 빌릴 수 없음. 값을 배열로 꺼내 직접 계산함
결과는 셀에 쓰거나 MsgBox로 표시함 return으로 값을 플로우에 반환할 수 있음. 알림이나 메일 발송은 플로우 쪽 커넥터가 담당함

getValues()가 반환하는 것은 (string | number | boolean)[][]라는 2차원 배열로, 셀 안의 내용이 문자열인 경우도 있습니다. VBA의 Sum이 묵묵히 건너뛰어 주던 비수치 값을 직접 typeof로 걸러내야 합니다──이 “암묵적으로 해 주던 것이 명시적이 된다”는 감각이 다시 작성할 때 체감하는 차이의 대부분입니다.

한 가지 더, Office Scripts에서는 셀을 하나씩 읽고 쓰지 않고 범위로 한꺼번에 가져와 배열로 처리하는 것이 기본입니다. VBA에서도 셀 단위 반복은 느리다는 이야기가 있었지만, Office Scripts에서는 요청·응답 크기 상한이나 실행 시간 제한(4장)에 직접 영향을 미칩니다.

3. 판단표 ── 5가지 선택지를 유스케이스로 구분해서 사용하기

이행 대상 선택지는 “Office Scripts화”만이 아닙니다. 실무에서는 다음 5가지 선택지로 생각합니다.

선택지 적합한 경우 전제·제약
(1) VBA로 그대로 남김 개인·소규모 팀의 수작업. UserForm·이벤트·다른 앱 연계가 본질적으로 필요하고, 담당자가 실행 시 입회하는 운영으로 문제없는 경우 추가 라이선스 불필요.2 다만 특정인 의존·관리 밖 매크로의 위험은 재고 조사로 대응
(2) Office Scripts화해서 클라우드 플로우에서 실행 워크북 안에서 완결되는 정형·집계·전기. 예약 기동이나 메일·폼 수신을 트리거로 하고 싶은 경우. 워크북을 OneDrive / SharePoint에 둘 수 있는 경우 상용/교육용 Microsoft 365 라이선스 필요.6 이벤트·UserForm 등은 재설계 필요
(3) Excel Online (Business) 커넥터로 직접 처리 테이블에 대한 행 추가·조회·업데이트·삭제만 하는 단순한 처리. “폼 응답을 Excel에 추가”와 같은 경우 등 대상 범위가 테이블로 되어 있는 것이 전제. 기본 256행·최대 25MB 등의 제한 있음4
(4) 데스크톱 플로우로 기존 VBA를 그대로 실행 VBA를 다시 작성할 여유는 없지만, 실행·전후 처리(파일 배치, 알림)만 자동화하고 싶은 경우. 워크북이 사내 파일 서버에 있는 경우 Windows 머신이 필요. 클라우드 플로우에서의 실행에는 연결 소유자의 Power Automate Premium 라이선스(무인 실행은 Process 라이선스)가 필요910
(5) .NET으로 다시 만듦 대량 데이터 처리, 복잡한 업무 로직, 자동 테스트나 Git 관리가 필수, 장표 생성이 주목적인 경우 개발 비용이 최대. 다만 장기적인 유지보수성·성능은 가장 높음. 장표는 Open XML 등으로 Excel에 비의존적으로 만들 수 있음

어느 것을 선택할지는 다음 흐름으로 대략 결정됩니다.

아니오가능불가능다른 앱 UI 조작/COM 연계둘 수 있음충분함서식/복수 시트/로직 있음둘 수 없음사내 서버 한정없음있음/성능・테스트 필요VBA 매크로를 1개 선택처리는 워크북 내에서완결되는가?Excel 외부 부분은커넥터로 대체할 수 있는가?메일 발송・파일 수집 등처리를 분해 -Excel 부분→Office Scripts그 외→플로우의 커넥터VBA를 다시 작성할여유가 있는가?워크북을 OneDrive/SharePoint에 둘 수 있는가?테이블에 대한 행 조작만으로 끝나는가?Excel Online Business커넥터로 직접 처리Office Scripts화해서Run script로 실행데스크톱 플로우로VBA를 그대로 실행.NET으로 다시 작성

주의할 점은 (4)가 “이행의 종착점”이 아니라 연명책이라는 점입니다. VBA 본체의 특정인 의존이나 버전 관리 과제는 그대로 남습니다. 그래도 “먼저 실행을 자동화해 수작업 실행 실수를 없애고, 그 사이에 VBA 내용을 단계적으로 Office Scripts나 .NET으로 옮긴다”는 시간 벌기로서는 충분히 실용적입니다.

4. 구현 패턴 ── Run script 액션과 커넥터의 제한값

스크립트의 실행(Run script)

클라우드 플로우에서 Office Scripts를 실행하려면 Excel Online (Business) 커넥터의 2가지 액션을 사용합니다. Run script는 OneDrive(기본 저장 위치)에 있는 스크립트용이고, Run script from SharePoint library는 팀의 SharePoint 라이브러리에 저장한 스크립트용입니다.7

전형적인 구성은 다음과 같습니다.

  1. 트리거: 예약(Recurrence), 메일 수신, 폼 제출 등
  2. OneDrive / SharePoint 커넥터로 대상 워크북을 특정
  3. Run script로 Office Scripts를 실행하고, 반환값을 받음
  4. 반환값을 사용해 Teams 알림이나 메일 발송

스크립트는 파라미터를 받아 값을 반환할 수 있으므로, “플로우에서 검색 키를 전달하고, 워크북 안의 해당 데이터를 반환받아, 플로우 쪽에서 메일로 만든다”와 같은 데이터 전달이 가능합니다. 또한 Excel 쪽에 있던 “스크립트의 예약 실행” 기능은 본 기사 작성 시점(2026년 7월)에는 일시적으로 비활성화되어 있으며, 예약 실행은 Power Automate의 플로우로 구성하는 방법이 안내되고 있습니다.11

기록하고, 손보고, 플로우에 넣기

처음부터 TypeScript를 작성할 필요는 없습니다. VBA의 매크로 기록과 마찬가지로 “기록한 다음 고치는” 방식으로 진행할 수 있습니다. 실제 절차는 다음과 같습니다.12

  1. 기록한다. Excel(웹판 또는 Windows판)에서 대상 워크북을 열고, 리본의 “자동화(Automate)” 탭에서 “새 스크립트(New Script)” > “기록에서 만들기(Create from Recording)”를 선택해 평소의 조작을 한 차례 수행한 뒤 정지합니다. “자동화” 탭이 보이지 않는 경우는 리본의 오버플로(아래쪽 화살표)를 확인합니다. 그래도 없다면 라이선스나 플랫폼 조건을 충족하지 못한 것입니다(5장).
  2. 내용을 읽는다. 기록이 끝나면 상세 창이 열리므로 “편집(Edit)”으로 코드 편집기를 엽니다. 여기서 자신의 조작이 getRangesetValue의 어떤 호출이 되었는지 알 수 있습니다. VBA의 매크로 기록과 마찬가지로, 조작 결과만 있는 그대로 나열된 코드가 나옵니다.
  3. 손본다. 기록할 수 있는 것은 조작 그 자체뿐이므로, 조건 분기·반복·시트 이름을 받는 방식은 직접 추가합니다. 기록 직후의 코드는 getActiveWorksheet로 “지금 열려 있던 시트”를 붙잡는 경우가 많아, 플로우에서 무인으로 동작시키면 의도하지 않은 시트에 걸립니다. 이 부분을 getWorksheet("売上")처럼 이름으로 가져오는 형태로 고치는 것이 가장 먼저 해야 할 손질입니다.
  4. 플로우에 넣는다. 스크립트는 OneDrive(또는 SharePoint 라이브러리)에 저장되므로, 클라우드 플로우 쪽에서 “스크립트의 실행(Run script)” 액션을 추가하고 워크북과 저장한 스크립트를 선택합니다. 스크립트의 main에 파라미터를 추가해 두면 액션의 입력란이 그만큼 늘어나, 플로우에서 값을 전달할 수 있게 됩니다.

이 “기록→손질→적용”을 한 번 통째로 해 보는 것이, 판단표를 들여다보는 것보다 빠른 이해의 지름길입니다. 이행 대상 중 가장 단순한 매크로로 한 번 해 두면 3장의 분류 정확도가 올라갑니다.

제한값은 먼저 확인한다

VBA에서의 이행에서 가장 함정이 되는 것은 클라우드 실행 특유의 제한값입니다. 데스크톱의 VBA에는 실질적으로 존재하지 않았던 상한이 여기서는 명확하게 존재합니다.

목록을 전부 외울 필요는 없습니다. 실무에서 부딪히는 순서로 먼저 확인해야 할 제한은 다음 3가지입니다.

  1. 동기 처리의 120초 타임아웃. “VBA에서 3분 걸리던 집계”는 그대로 가져오면 실패합니다. 이행 전에 현행 매크로의 소요 시간을 한 번 측정해 두세요. 이 부분이 가장 먼저, 그리고 가장 자주 부딪히는 지점입니다.
  2. 1회 요청·응답의 5MB. “시트 전체를 getValues로 가져오는” 방식으로 작성하면 행 수가 많은 워크북에서 쉽게 초과합니다. 필요한 열·행으로 좁히거나 나누어 처리하는 설계가 필요합니다.
  3. 커넥터가 다룰 수 있는 파일 크기 25MB. 이것은 작성 방식으로는 회피할 수 없습니다. 워크북 자체가 25MB를 넘는다면, 그 시점에 클라우드 쪽 선택지는 사라지고 데스크톱 플로우 경유나 .NET이 됩니다.

반대로 말하면 “1분 이내에 끝난다”, “다루는 것이 수천 행”, “워크북이 수 MB”라면 아래 표는 거의 신경 쓰지 않고 진행할 수 있습니다.

제한 출처
Office Scripts의 1회 요청·응답 크기 최대 5MB 6
1개 범위(Range)의 셀 수 최대 500만 셀 6
Run script 호출 횟수 사용자 1명당 하루 1,600회, 그리고 10초당 3회까지 64
동기 처리의 타임아웃 120초 6
Run script에 전달하는 파라미터 크기 최대 30,000,000바이트(약 28.6MB) 6
커넥터가 다룰 수 있는 Excel 파일 크기 최대 25MB 4
커넥터의 1회 요청 크기 최대 5MB 4
커넥터의 API 호출 1개 연결당 60초 동안 100회 4

Excel Online (Business) 커넥터로 테이블을 직접 조작하는 경우는 다음 사항도 추가로 확인하세요.4

  • 행 조작은 테이블을 전제로 합니다. “행 추가(Add a row into a table)”, “행 가져오기(Get a row)” 등의 액션은 테이블(ListObject)을 지정하는 설계로, 단순한 셀 범위에 쓰인 데이터는 대상으로 삼을 수 없습니다. VBA 시절의 “A1 셀부터 적당히 쓰기 시작한 시트”는 이행 전에 테이블화가 필요합니다.
  • List rows present in a table는 기본값으로 256행까지만 반환합니다. 전체 행을 가져오려면 페이지네이션 설정을 활성화합니다. 가져올 수 있는 열도 기본값으로 앞쪽 500열까지입니다.
  • 쓰기 반영에는 최대 30초 정도의 지연이 발생할 수 있습니다. 또한 커넥터 이용 후 파일은 최대 6분간 잠길 수 있습니다.
  • 여러 클라이언트에서의 동시 쓰기는 지원되지 않습니다. 데스크톱 Excel에서 열어 둔 채로 있는 워크북에 플로우에서 쓰는 것과 같은 운영은 경합·불일치의 원인이 됩니다.
  • 지원 형식은 .xlsx와 .xlsb(바이너리 워크북)입니다. .xlsm은 Run script 액션에서만 파일 브라우저에서 선택할 수 있으며, 다른 액션에서 사용하려면 파일 ID 지정이 필요합니다. 다만 앞서 설명한 대로 안의 VBA 매크로는 실행되지 않습니다. ActiveX 컨트롤이나 폼 컨트롤을 포함한 .xlsm은 커넥터에서 동작하지 않는 경우가 있으므로 사전 검증이 필수입니다.1

“매일 밤 수십만 행을 집계하는 매크로”를 그대로 Office Scripts로 다시 작성하면 5MB 제한이나 120초 타임아웃에 정면으로 부딪힙니다. 이 규모는 처음부터 .NET(선택지 5)으로 분류하는 편이 건전합니다.

데스크톱 플로우로 VBA를 실행하기

VBA를 그대로 남기는 경우, 데스크톱 플로우의 Launch Excel로 워크북을 열고, Run Excel macro 액션으로 매크로 이름(인수는 세미콜론으로 구분)을 지정해 실행합니다. 개인용 매크로 워크북(PERSONAL.XLSB)의 매크로를 사용하는 경우는 Launch Excel의 상세 설정에서 “새 Excel 프로세스 아래 배치(Nest under a new Excel process)”와 “애드인과 매크로 불러오기(Load add-ins and macros)”를 활성화해야 합니다.5

클라우드 플로우에서 데스크톱 플로우를 실행하려면 머신 등록과 데스크톱 플로우 연결이 필요하며, 유인 실행에서는 연결 소유자에게 Power Automate Premium 사용자 라이선스가, 무인 실행에서는 머신에 Power Automate Process 라이선스(또는 구 Unattended RPA 애드온)가 필요합니다.910 오류 처리나 무인 실행의 전제 조건 등 데스크톱 플로우 전반의 설계는 별도 기사 “Power Automate로 업무 자동화하기 ── 클라우드 플로우・데스크톱 플로우 구분과 오류 처리 설계“에 자세히 적어 두었습니다.

5. 라이선스와 전제 조건

Office Scripts는 “Excel에 딸린 무료 기능”이 아니라는 점은 이행 판단의 이른 단계에서 확인해야 합니다.

  • Office Scripts의 이용·작성에는 상용 또는 교육용 Microsoft 365 구독 라이선스(Office 365 Business / Business Premium / ProPlus / ProPlus for Devices / A3 / A5 / E1 / E3 / E5 / F3)와 OneDrive for Business가 필요합니다. 조직 내 공유 링크 활성화와, 연결된 환경(connected experiences)을 활성화한 인터넷 연결도 전제가 됩니다.6
  • Power Automate에서 Office Scripts를 사용하는 경우에도 Microsoft 365의 비즈니스 라이선스가 필요합니다. E1과 F3는 Power Automate 경유로 스크립트를 실행할 수 있지만, Excel 내의 Power Automate 통합(Excel의 “작업 자동화” 기능 등)은 사용할 수 없습니다.7
  • 개인·가정용 Microsoft 365에서의 Office Scripts는 본 기사 작성 시점(2026년 7월)에는 미리 보기 단계로, Microsoft 365 Insider 프로그램 참여가 필요합니다. 업무 이용을 전제로 삼을 수는 없습니다.6
  • 클라이언트 쪽은 Excel on the web, Excel for Windows(버전 2210 이후), Excel for Mac에서 동작합니다.6
  • 한편, VBA는 데스크톱판 Excel에 내장되어 있어 특별한 라이선스가 필요 없습니다.2

위의 라이선스 조건은 본 기사 작성 시점(2026년 7월) 기준입니다. 대상 플랜이나 전제 조건은 개정될 수 있으므로, 도입을 판단하기 전에 각주의 Microsoft Learn에서 최신 조건을 확인하세요.

즉, “사내 Excel은 영구 라이선스판(일시불판)이고 Microsoft 365는 미계약”인 환경에서는 애초에 Office Scripts라는 선택지가 존재하지 않습니다. 이 경우 이행 대상은 데스크톱 플로우 경유의 실행 자동화나 .NET으로의 재작성으로 좁혀집니다.

보안 측면의 차이도 짚어 둘 가치가 있습니다. VBA 매크로는 Excel과 같은 권한으로 동작하기 때문에 데스크톱 전체에 접근할 수 있지만, Office Scripts가 접근할 수 있는 것은 워크북뿐이며 로그인 중인 사용자의 인증 토큰이 스크립트에 전달되는 일도 없습니다. 관리자는 테넌트 단위·그룹 단위로 Office Scripts의 이용 가능 여부나 Power Automate에서의 이용 가능 여부를 제어할 수 있습니다. 매크로의 보안 관리로 고생해 온 정보 시스템 부서에게 이러한 통제의 용이함은 이행의 이점 중 하나입니다.2

6. 이행을 진행하는 방법 ── 재고 조사, 분류, 단계적 이행

실제 이행은 다음 3단계로 진행하는 것을 권장합니다.

1단계: 재고 조사. 어떤 워크북에, 어떤 매크로가, 누구의 관리로 동작하고 있는지를 목록화합니다. VBScript 폐지 대응과 같은 절차를 사용할 수 있으므로, 구체적인 방법은 별도 기사 “VBScript 폐지에 대비하는 VBA·사내 도구 점검 가이드“를 참조하세요. 재고 조사 시점에서 “이미 사용되지 않는 매크로”가 20~30% 발견되는 것이 일반적이며, 이들은 이행 대상에서 제외하는 것만으로도 작업량이 줄어듭니다.

2단계: 분류. 남은 매크로를 3장의 판단표에 대입합니다. 이때 매크로를 1개 단위가 아니라 처리 단위로 분해하는 것이 요령입니다. “파일 수집→정형→메일 발송” 매크로는 (3) 커넥터 + (2) Office Scripts + 메일 커넥터의 조합으로 분해할 수 있습니다. 분해해도 여전히 VBA 의존이 남는 부분(UserForm에서의 대화형 입력, 다른 앱의 COM 조작 등)만이 (1) 그대로 남기기나 (4) 데스크톱 플로우 경유의 후보가 됩니다.

3단계: 단계적 이행. 갑자기 모든 매크로를 다시 작성하지 않고 우선순위를 정합니다.

  1. 실행 빈도가 높고 워크북 안에서 완결되는 것부터 착수한다. 이행 효과가 크고 Office Scripts 숙련에도 적합합니다. VBA와 TypeScript는 언어는 다르지만, Office Scripts에도 조작 기록(Action Recorder)이 있어 VBA의 매크로 기록과 같은 감각으로 초안을 만들 수 있습니다.2
  2. 이행한 플로우를 병행 가동시켜 VBA판과 결과를 맞춰 보는 기간을 둡니다. 테이블화나 날짜 형식 차이로 인한 차이는 여기서 찾아냅니다.
  3. VBA로 그대로 남기기로 정한 것은 “관리하며 남긴다”. 실행 절차서와 담당자를 명확히 하고, 가능하다면 데스크톱 플로우 실행 쪽으로 옮겨 실행 로그를 남깁니다.

VBA 전반의 장래성이나, 애초에 VBA를 계속 사용해도 되는 상황에 대한 사고방식은 “VBA란 무엇인가 - 제약, 장래성, 교체해야 할 장면과 현실적인 이행 패턴“에, 장표 생성을 .NET으로 옮기는 경우의 방식 비교는 “Excel 장표 출력을 어떻게 만들까 - COM 자동화 / Open XML / 템플릿 방식의 판단표“에 정리해 두었습니다. 또한 .NET에서 Excel을 COM으로 조작하는 구성을 선택하는 경우는 프로세스가 잔류하는 고전적인 문제가 있으므로 “C#의 Excel 조작에서 EXCEL.EXE가 남는 문제 ── COM 참조 해제 패턴과 교체 판단“도 함께 확인하세요.

7. 정리

“VBA에서 Power Automate로 이행할 수 있나요”에 대한 답은 “매크로 전체를 통째로 옮길 수는 없지만, 처리를 분해하면 대부분은 이행할 곳이 있다”입니다.

워크북 안에서 완결되는 처리는 Office Scripts화해서 클라우드 플로우에서 호출하고, 단순한 행 조작은 커넥터에 직접 맡기고, 다른 앱 연계나 UserForm이 얽힌 부분은 VBA로 그대로 남기거나 데스크톱 플로우 경유로 연명시키며, 대량 데이터나 복잡한 로직은 .NET으로 분류한다. 이 구분만 처음에 해 두면, 이행을 한 번에 할 필요가 없고 빈도가 높은 매크로부터 순서대로 조금씩 진행할 수 있습니다.

반대로 구분 없이 “전부 Office Scripts로 다시 작성하자”며 시작하면, 이벤트나 UserForm의 벽, 5MB·120초 제한, 테이블 필수 제약에 잇달아 부딪혀 좌초합니다. 이행의 성패는 다시 작성하는 솜씨보다 착수 전의 재고 조사와 분류로 거의 결정됩니다. VBA 자산은 “언젠가 버릴 것”이 아니라 “구분해서 활용할 것”으로 다루는 것이 결국 가장 저렴합니다.

관련 글

관련 상담 영역

합동회사 코무라소프트에서는 Excel / VBA로 동작하는 기존 업무의 재고 조사부터 Power Automate·Office Scripts·.NET으로의 단계적 이행 설계까지, 기존 자산을 살리는 것을 전제로 한 상담을 다루고 있습니다.

참고 링크

  1. Microsoft Learn, How to use macro-enabled files in Power Automate flows. .xlsm 파일 내의 매크로는 Power Automate에서 실행할 수 없으며 Office Scripts만 유효하다는 점, Run script 액션에서만 .xlsm을 파일 브라우저에서 선택할 수 있다는 점, ActiveX/폼 컨트롤을 포함한 파일이 동작하지 않는 경우가 있다는 점에 대해.  2

  2. Microsoft Learn, Differences between Office Scripts and VBA macros. Office Scripts가 Excel 전용이며 워크북에만 접근할 수 있다는 점, 이벤트가 지원되지 않는다는 점, COM/OLE는 VBA만 가능하다는 점, Office Scripts에는 상용/교육 라이선스가 필요하고 VBA는 데스크톱판 Excel에 표준으로 탑재되어 있다는 점, 조작 기록·보안 통제의 차이에 대해.  2 3 4 5 6 7 8 9 10

  3. Microsoft Learn, Differences between Office Scripts and Office Add-ins. Office Scripts는 워크북과만 상호작용할 수 있으며, 대화상자나 독자적인 UI 컨트롤이 필요한 경우는 Office 애드인이 필요하다는 점에 대해.  2

  4. Microsoft Learn, Excel Online (Business) - Connectors reference. 최대 파일 크기 25MB, 1회 요청 5MB, List rows 기본 256행과 페이지네이션, 가져올 열의 기본 500열 상한, Run script의 10초당 3회·하루 1,600회 제한, 마지막 이용 후 최대 6분의 파일 잠금, 쓰기 반영의 최대 30초 지연, 1개 연결당 60초에 100회의 스로틀링, 동시 편집 미지원, 지원 파일 형식에 대해.  2 3 4 5 6 7

  5. Microsoft Learn, Run macros on an Excel workbook. 데스크톱 플로우의 Run Excel macro 액션에 의한 VBA 매크로 실행, PERSONAL.XLSB의 매크로 실행에 Launch Excel의 “Nest under a new Excel process”, “Load add-ins and macros” 옵션이 필요하다는 점에 대해.  2 3

  6. Microsoft Learn, Platform limits and requirements with Office Scripts. 필요한 라이선스 목록과 OneDrive for Business 요건, 지원 플랫폼(Excel on the web / Windows판 2210 이후 / Mac), 요청·응답 5MB 제한, 범위 500만 셀 제한, Run script 하루 1,600회 제한, 120초 타임아웃, 파라미터 30,000,000바이트 제한, Power Automate 실행 시 외부 API 호출(fetch)이 실패한다는 점, 개인·가정용은 미리 보기 단계라는 점에 대해.  2 3 4 5 6 7 8 9 10 11 12

  7. Microsoft Learn, Run Office Scripts with Power Automate. Run script / Run script from SharePoint library의 2가지 액션, Power Automate에서의 Office Scripts 이용에 Microsoft 365 비즈니스 라이선스가 필요하다는 점, E1·F3는 Power Automate에서의 실행은 가능하지만 Excel 내의 통합 기능은 사용할 수 없다는 점에 대해.  2 3

  8. Microsoft Learn, Guidance: Migrate from classic workflows to Power Automate flows in SharePoint. Power Automate의 범용 HTTP 액션이 프리미엄 커넥터라는 점에 대해. 

  9. Microsoft Learn, Trigger desktop flows from cloud flows. 클라우드 플로우에서 데스크톱 플로우를 실행하기 위한 전제 조건(등록된 머신, 데스크톱 플로우 연결, 실행 형태에 따른 라이선스)에 대해.  2

  10. Microsoft Learn, A failed license check on a desktop flow run. 데스크톱 플로우의 유인 실행에는 연결 소유자의 Power Automate Premium 사용자 라이선스, 무인 실행에는 Unattended RPA 애드온 또는 Power Automate Process 라이선스가 필요하다는 점에 대해.  2

  11. Microsoft Learn, Office Scripts in Excel. Excel의 스크립트 예약 기능이 일시적으로 비활성화되어 있으며, 대신 Power Automate의 플로우로 예약 실행하도록 안내되고 있다는 점에 대해(2026년 7월 시점의 기재). 

  12. Microsoft Learn, Tutorial: Create and format an Excel table. Excel의 “Automate” 탭에서 “New Script” > “Create from Recording”으로 조작을 기록하는 것, Automate 탭이 보이지 않는 경우는 리본의 오버플로나 플랫폼 요건을 확인하는 것, 기록 후 상세 창의 “Edit”으로 코드 편집기를 열어 손보는 “기록한 다음 편집하는” 방식에 대해. 기록 직후의 코드가 workbook.getActiveWorksheet()로 시트를 가져오는 예도 같은 페이지에 게재되어 있음. 

같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.

이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.

이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.

자주 묻는 질문

이 기사 주제에 대해 상담 시 자주 나오는 질문을 모았습니다.

기존 VBA 매크로는 Power Automate에서 직접 실행할 수 있나요?
클라우드 플로우에서는 실행할 수 없습니다. Excel Online (Business) 커넥터는 .xlsm 파일 자체는 다룰 수 있지만, 그 안의 매크로를 Power Automate에서 실행할 수는 없으며, 실행할 수 있는 것은 Office Scripts뿐입니다. 한편 데스크톱 플로우(Power Automate for desktop)에는 Run Excel macro 액션이 있어, Launch Excel로 연 워크북의 VBA 매크로를 그대로 실행할 수 있습니다. VBA 코드를 바꾸지 않고 실행만 자동화하고 싶다면 데스크톱 플로우를 경유하는 것이 현실적인 선택지입니다.
Office Scripts는 VBA를 완전히 대체할 수 있나요?
대체할 수 없습니다. Office Scripts는 Excel 전용으로, Word나 Outlook 등 다른 Office 앱은 조작할 수 없습니다. 워크북에만 접근할 수 있기 때문에 로컬 파일이나 COM/OLE 연계도 불가능하며, Workbook_Open 같은 이벤트 구동이나 UserForm에 의한 독자적인 대화상자도 없습니다. 반대로 워크북 안에서 완결되는 정형·집계·전기 같은 처리라면 Office Scripts로 대체할 수 있고, Power Automate에서 예약 실행이나 이벤트 기동을 할 수 있게 됩니다. 양자는 대체 관계가 아니라 담당 범위가 다르다고 보는 것이 정확합니다.
Office Scripts를 이용하는 데 필요한 라이선스는 무엇인가요?
상용 또는 교육용 Microsoft 365 라이선스(Office 365 Business / Business Premium / ProPlus / E1 / E3 / E5 / F3 / A3 / A5)와 OneDrive for Business가 필요합니다. Power Automate에서 Office Scripts를 실행하는 경우에도 Microsoft 365의 비즈니스 라이선스가 필요하며, E1과 F3는 Power Automate 경유 실행은 가능하지만 Excel 내의 Power Automate 통합 기능은 사용할 수 없습니다. VBA가 데스크톱판 Excel에 표준으로 포함되어 있어 추가 라이선스가 필요 없는 것과는 대조적이며, 이행 여부를 판단하기 전에 자사의 라이선스를 확인해 두어야 합니다.
Excel Online (Business) 커넥터만으로 자동화가 완결되나요?
단순한 처리라면 완결되지만, 제한이 많다는 점에 주의가 필요합니다. 행 추가·조회·업데이트·삭제는 테이블(ListObject)로 되어 있는 범위를 전제로 하며, List rows present in a table은 기본값으로 256행까지만 반환하므로 페이지네이션을 활성화해야 합니다. 파일 크기는 최대 25MB, 1회 요청은 최대 5MB이며, 쓰기 반영에 최대 30초의 지연이 발생할 수도 있습니다. 테이블에 대한 몇 행 정도의 읽기/쓰기는 커넥터로 직접 처리하고, 셀 서식이나 여러 시트에 걸친 처리는 Office Scripts로 처리하는 식으로 구분해서 쓰는 것이 실무적입니다.

저자 프로필

기사 저자의 프로필 페이지입니다.

Go Komura

합동회사 코무라소프트 대표

Windows 소프트웨어 개발, 기술 상담, 장애 조사를 중심으로 재현이 어려운 장애 조사와 기존 자산이 남아 있는 프로젝트에 강점이 있습니다.

블로그 목록으로 돌아가기