Power Automate Desktop에서 Excel 파일을 열고 VBA 매크로를 실행할 때 오류 50290, 매크로 실행 실패 또는 COMException이 표시될 수 있습니다.
화면에 나타난 오류 문구가 비슷해 보여도 원인은 같지 않습니다. Power Automate Desktop가 매크로를 시작하지 못한 것인지, 매크로가 시작된 뒤 VBA 코드 안에서 실패한 것인지, Excel과의 COM 연결 자체가 실패한 것인지 먼저 구분해야 합니다.
1. Power Automate Desktop의 Excel 매크로 실행 작업에서 매크로를 실행하지 못함
2. 매크로가 시작된 뒤 Excel VBA에서 런타임 오류 50290 발생
3. Power Automate Desktop에서
COMException 또는 HRESULT: 0x800xxxxx 발생
오류 50290이라는 숫자만으로 특정 시트, Select 문 또는 Excel의 백그라운드 실행이 원인이라고 단정하면 안 됩니다. 실패한 위치와 실제 오류 메시지를 기준으로 수정해야 합니다.
![]() |
| Power Automate Desktop의 매크로 실행 실패, Excel VBA 오류 50290과 COMException은 발생 위치에 따라 점검할 항목이 다릅니다. 위 이미지는 오류 진단 순서를 설명하기 위한 대표 개념 이미지입니다. |
이 글은 Microsoft의 Power Automate Desktop Excel 작업, Excel 매크로 실행, Excel 자동화 오류 해결, 데스크톱 흐름 오류 처리와 Excel VBA 개체 모델 공식 문서를 기준으로 작성했습니다. 메뉴 이름은 사용하는 Power Automate Desktop 버전과 표시 언어에 따라 일부 다르게 보일 수 있습니다.
먼저 오류가 발생한 위치를 확인합니다
| 오류가 나타난 위치 | 우선 확인할 항목 | 수정할 위치 |
|---|---|---|
| Excel 매크로 실행 작업 | Excel 인스턴스, 매크로 이름, 매크로 저장 파일 | Power Automate Desktop 흐름 설정 |
| Excel VBA 오류 창 | 디버그를 눌렀을 때 강조되는 코드 줄 | VBA 통합 문서·시트·범위 참조 |
| COMException 또는 HRESULT 오류 | Excel 설치, Power Automate Desktop 설치, 파일 위치와 연결 상태 | 실행 환경과 Excel 자동화 연결 |
Power Automate Desktop 작업에서 즉시 실패하고 Excel VBA 오류 창이 나타나지 않았다면 매크로 내부 코드보다 Excel 인스턴스와 매크로 호출 설정을 먼저 확인합니다.
반대로 Excel VBA 오류 창에서 디버그를 눌렀을 때 특정 코드가 강조된다면 매크로는 이미 시작된 상태입니다. 이 경우에는 강조된 줄에서 사용하는 Workbook, Worksheet, Range 또는 메서드를 확인해야 합니다.
Excel 시작과 매크로 실행에 같은 인스턴스를 사용합니다
Power Automate Desktop의 Excel 작업은 Excel 인스턴스 변수를 기준으로 실행됩니다. 먼저 Excel 시작 작업으로 매크로가 들어 있는 파일을 연 뒤, 생성된 Excel 인스턴스를 Excel 매크로 실행 작업에 그대로 전달해야 합니다.
매크로가 저장된
.xlsm 또는 .xlsb 파일을
열고 생성된 Excel 인스턴스 변수를 확인합니다.
앞에서 생성된 동일한 Excel 인스턴스를 선택하고 매크로 이름을 입력합니다.
매크로가 완료된 다음 필요한 읽기, 쓰기 또는 저장 작업을 실행합니다.
모든 Excel 작업이 끝난 뒤 마지막에 Power Automate Desktop에서 해당 인스턴스를 닫습니다.
흐름에서 Excel 시작 작업을 두 번 사용했다면 서로 다른 인스턴스 변수가 만들어질 수 있습니다. 매크로가 들어 있는 파일을 연 인스턴스와 매크로 실행 작업에서 선택한 인스턴스가 같은지 확인해야 합니다.
매크로 이름과 저장 위치를 확인합니다
Excel 매크로 실행 작업은 지정된 Excel 인스턴스의 문서에서 매크로를 실행합니다. 매크로 이름이 틀렸거나 매크로가 다른 파일에 저장돼 있으면 매크로를 시작하지 못할 수 있습니다.
다음 항목을 구분해 확인합니다.
- 매크로가 현재 열린
.xlsm또는.xlsb파일에 있는지 - 표준 모듈에 실행할
Public Sub가 있는지 - Power Automate Desktop에 입력한 매크로 이름의 철자가 맞는지
- 매크로가 PERSONAL.XLSB 또는 추가 기능에 저장돼 있지는 않은지
- 매크로를 포함하지 않는
.xlsx파일만 열어 둔 것은 아닌지
Excel에서 사용 가능한 매크로 이름을 확인하려면 해당 통합 문서를 열고 개발 도구 → 매크로를 확인합니다.
매크로가 인수를 받도록 작성됐다면 Power Automate Desktop의 매크로 입력란에서 매크로 이름 뒤에 인수를 세미콜론으로 구분합니다. 인수가 필요하지 않은 전용 진입점을 만드는 편이 흐름 구성을 단순하게 할 수 있습니다.
PERSONAL.XLSB의 매크로는 시작 옵션이 다릅니다
매크로가 작업 대상 파일이 아니라 개인용 매크로 통합 문서인 PERSONAL.XLSB에 저장돼 있다면 Excel 시작 작업의 고급 옵션을 별도로 확인해야 합니다.
- 새 Excel 프로세스에서 중첩 사용
- 추가 기능 및 매크로 로드 사용
이 설정은 PERSONAL.XLSB에 저장된 매크로를 Power Automate Desktop에서 실행할 때 필요한 구성을 확인하기 위한 것입니다. 모든 매크로 실행 오류를 해결하려고 무조건 설정을 바꾸는 방식으로 사용하지 않습니다.
ThisWorkbook과 작업 대상 통합 문서를 구분합니다
ThisWorkbook은 화면에서 현재 선택된 파일이 아니라
실행 중인 VBA 코드가 저장된 통합 문서를 가리킵니다.
매크로가 작업 대상 보고서 파일 안에 저장돼 있다면
ThisWorkbook으로 해당 파일을 참조할 수 있습니다.
Option Explicit
Public Sub PadEntryPoint()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets("데이터")
ws.Range("A2").ClearContents
End Sub
하지만 매크로가 PERSONAL.XLSB 또는 별도 추가 기능에 저장돼 있다면
ThisWorkbook은 작업 대상 보고서가 아니라 PERSONAL.XLSB나
추가 기능 파일을 가리킵니다.
이 경우에는 작업 대상 통합 문서를 이름으로 명시적으로 찾습니다.
Option Explicit
Public Sub PadEntryPointFromPersonal()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = GetOpenWorkbookOrFail_( _
"업무보고서.xlsm" _
)
Set ws = GetWorksheetOrFail_( _
wb, _
"데이터" _
)
ws.Range("A2").ClearContents
End Sub
Private Function GetOpenWorkbookOrFail_( _
ByVal workbookName As String _
) As Workbook
On Error Resume Next
Set GetOpenWorkbookOrFail_ = _
Application.Workbooks(workbookName)
On Error GoTo 0
If GetOpenWorkbookOrFail_ Is Nothing Then
Err.Raise _
vbObjectError + 510, _
"GetOpenWorkbookOrFail_", _
"열린 통합 문서를 찾을 수 없습니다: " & workbookName
End If
End Function
Private Function GetWorksheetOrFail_( _
ByVal wb As Workbook, _
ByVal worksheetName As String _
) As Worksheet
On Error Resume Next
Set GetWorksheetOrFail_ = _
wb.Worksheets(worksheetName)
On Error GoTo 0
If GetWorksheetOrFail_ Is Nothing Then
Err.Raise _
vbObjectError + 511, _
"GetWorksheetOrFail_", _
"워크시트를 찾을 수 없습니다: " & worksheetName
End If
End Function
위 코드는 통합 문서와 시트가 없을 때 오류를 숨기지 않고 어떤 객체를 찾지 못했는지 설명합니다.
ActiveWorkbook과 ActiveSheet 의존성을 줄입니다
ActiveWorkbook은 현재 맨 앞에 있는 Excel 창의 통합
문서를 반환합니다. Power Automate Desktop가 파일을 열거나 다른 Excel
작업을 수행하는 동안 활성 통합 문서가 예상과 달라질 수 있습니다.
다음 코드는 현재 활성 상태에 의존합니다.
ActiveWorkbook.ActiveSheet.Range("A2").ClearContents
매크로가 들어 있는 통합 문서가 작업 대상이라면 다음처럼 객체를 명시합니다.
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets("데이터")
ws.Range("A2").ClearContents
매크로가 PERSONAL.XLSB에 있다면 앞에서 설명한 것처럼 열린 통합 문서를 이름으로 확인한 뒤 Worksheet 변수를 설정합니다.
Select와 Selection 없이 범위를 직접 처리합니다
매크로 기록기로 만든 코드는 셀을 선택한 뒤 Selection에 명령을 실행하는 구조가 많습니다.
Worksheets("데이터").Activate
Range("A2").Select
Selection.ClearContents
화면에서 어느 통합 문서와 시트가 활성화됐는지에 의존하지 않도록 범위를 직접 지정합니다.
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("데이터")
ws.Range("A2").ClearContents
ClearContents는 지정한 범위의 값과 수식을 지우고 셀
서식은 유지합니다. 선택 상태가 필요한 작업이 아니라면
Select와 Selection을 거치지 않는 편이
대상 범위를 명확하게 보여줍니다.
PAD 전용 매크로 진입점을 분리합니다
버튼 클릭 이벤트나 Worksheet 이벤트를 Power Automate Desktop에서
직접 호출하기보다, 표준 모듈에 전용 Public Sub를 만들고
그 안에서 필요한 작업을 실행하는 구조가 명확합니다.
Option Explicit
Public Sub PadEntryPoint()
On Error GoTo ErrorHandler
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = GetWorksheetOrFail_( _
wb, _
"데이터" _
)
ws.Range("A2").ClearContents
ws.Range("B2").Value2 = Now
Exit Sub
ErrorHandler:
Dim errorNumber As Long
Dim errorSource As String
Dim errorDescription As String
errorNumber = Err.Number
errorSource = Err.Source
errorDescription = Err.Description
Err.Raise _
errorNumber, _
"PadEntryPoint | " & errorSource, _
errorDescription
End Sub
Private Function GetWorksheetOrFail_( _
ByVal wb As Workbook, _
ByVal worksheetName As String _
) As Worksheet
On Error Resume Next
Set GetWorksheetOrFail_ = _
wb.Worksheets(worksheetName)
On Error GoTo 0
If GetWorksheetOrFail_ Is Nothing Then
Err.Raise _
vbObjectError + 512, _
"GetWorksheetOrFail_", _
"워크시트를 찾을 수 없습니다: " & worksheetName
End If
End Function
이 예제는 “데이터” 시트가 없을 때 실행을 성공한 것처럼 끝내지 않고 오류 설명을 다시 전달합니다. Power Automate Desktop의 매크로 입력란에는 다음 이름을 지정합니다.
PadEntryPoint
매크로 안에서 Excel을 먼저 닫지 않습니다
매크로가 끝난 뒤 Power Automate Desktop에서 셀 읽기, 파일 저장 또는
Excel 닫기 작업을 계속 실행한다면 VBA 코드 안에서 먼저
Application.Quit을 실행하지 않아야 합니다.
다음과 같은 흐름은 충돌할 수 있습니다.
- Power Automate Desktop에서 Excel을 시작합니다.
- 매크로가
Application.Quit으로 Excel을 종료합니다. - Power Automate Desktop가 종료된 인스턴스에 저장 작업을 요청합니다.
Excel을 닫는 주체를 하나로 정합니다. 후속 Excel 작업이 있다면 VBA는 필요한 데이터 처리만 수행하고, 저장과 종료는 Power Automate Desktop의 Excel 작업에서 처리하는 편이 흐름을 명확하게 만듭니다.
COMException은 매크로 코드만의 문제로 단정하지 않습니다
Power Automate Desktop에 다음과 같은 오류가 표시된다면 VBA에서 강조된 코드 줄만 찾는 방식으로는 해결되지 않을 수 있습니다.
System.Runtime.InteropServices.COMExceptionHRESULT: 0x800xxxxx
Microsoft는 이 계열 오류가 특정 Excel 작업과 일대일로 연결되지 않는다고 안내합니다. 다음 실행 환경을 나눠 확인합니다.
- 데스크톱 Excel이 정상적으로 설치되고 라이선스가 활성화돼 있는지
- Power Automate Desktop가 정상적으로 설치돼 있는지
- 파일 확장자와 실제 파일 형식이 일치하는지
- 파일이 손상되거나 잘못된 경로로 이동하지 않았는지
- 파일이 OneDrive 또는 SharePoint 동기화 폴더에 있는지
- Excel 프로세스가 이전 실패 뒤 남아 있지는 않은지
특정 오류 번호만 보고 VBA 코드를 전부 수정하기보다 같은 파일을 데스크톱 Excel에서 정상적으로 열 수 있는지, Power Automate Desktop가 빈 Excel 인스턴스를 정상적으로 시작할 수 있는지부터 범위를 나눠 확인하는 편이 적절합니다.
OneDrive와 SharePoint 동기화 파일은 로컬 복사본으로 구분합니다
Power Automate Desktop의 Excel 자동화는 COM 개체를 사용합니다. Microsoft 공식 문서는 OneDrive와 SharePoint가 COM으로 시작된 Excel 인스턴스와 완전히 호환되지 않을 수 있다고 안내합니다.
OneDrive 또는 SharePoint 동기화 폴더의 파일에서 오류가 반복되면 다음 구조를 검토합니다.
- 동기화 폴더의 원본 파일을 로컬 작업 폴더에 복사합니다.
- Power Automate Desktop에서 로컬 복사본을 엽니다.
- Excel 작업과 매크로를 로컬 복사본에 실행합니다.
- 작업이 끝난 파일을 필요한 동기화 위치로 다시 복사합니다.
Excel 시작 작업 자체가 실패하는 환경에서는 Excel을 응용 프로그램 실행 작업으로 먼저 실행한 뒤, 충분히 열린 다음 실행 중인 Excel에 연결하는 우회 방법도 Microsoft 문서에 안내돼 있습니다.
원본 파일을 덮어쓰기 전에 매크로와 저장 작업이 정상적으로 끝났는지 확인할 수 있는 흐름을 구성합니다. 실패한 로컬 파일로 동기화 원본을 바로 교체하지 않도록 저장과 복사 단계를 오류 처리 구역에 포함합니다.
오류를 무시한 채 다음 작업으로 진행하지 않습니다
Power Automate Desktop의 개별 작업에는 오류 발생 시 설정이 있습니다. 오류가 발생해도 무조건 다음 작업으로 이동하도록 만들면 매크로가 실패했는데도 파일 저장이나 전송 단계가 실행될 수 있습니다.
특히 다음과 같은 작업은 매크로 실패 뒤 계속 실행하지 않는 편이 적절합니다.
- 결과 파일을 원본 위치에 덮어쓰기
- 완료 표시를 기록하기
- 파일을 이메일로 전송하기
- Excel을 저장한 뒤 삭제하거나 이동하기
- 다음 시스템에 성공 상태를 전달하기
매크로 실행 작업이 실패하면 오류를 기록한 뒤 흐름을 중단하거나 별도의 실패 처리 하위 흐름으로 이동하도록 구성합니다.
마지막 오류의 작업명과 메시지를 기록합니다
Power Automate Desktop의 마지막 오류 가져오기 작업은 최근에 발생한 오류 정보를 오류 형식 변수에 저장합니다.
이 변수에서 다음 정보를 확인할 수 있습니다.
- 실패한 작업 이름
- 실패한 작업의 위치와 인덱스
- 작업이 포함된 하위 흐름
- 오류 세부 정보
- 오류 메시지
“50290 발생”만 기록하지 말고, Excel 시작에서 실패했는지, 매크로 실행에서 실패했는지, 매크로 이후 저장 작업에서 실패했는지를 함께 남겨야 원인을 구분할 수 있습니다.
재시도는 일시적인 오류에만 제한적으로 적용합니다
Power Automate Desktop에서는 개별 작업이나 오류 블록에 재시도 정책을 설정할 수 있습니다. 하지만 매크로가 일부 데이터를 변경한 뒤 마지막 단계에서 실패했다면 전체 매크로를 다시 실행할 때 같은 작업이 중복될 수 있습니다.
재시도 전에는 다음을 확인합니다.
- 매크로가 어느 단계까지 실행됐는지 확인할 수 있는지
- 같은 매크로를 다시 실행해도 행이나 파일이 중복되지 않는지
- 이미 처리한 작업을 구분하는 상태값이나 고유 식별자가 있는지
- 매크로 이름·파일 위치처럼 재시도로 해결되지 않는 설정 오류는 아닌지
매크로를 찾지 못하거나 대상 시트가 존재하지 않는 오류는 같은 설정으로 반복해도 해결되지 않습니다. 반면 실행 환경에서 일시적인 Excel 연결 오류가 확인됐고 중복 처리 위험이 없다면 제한된 재시도를 검토할 수 있습니다.
오류 유형별로 수정할 위치
같은 Excel 인스턴스를 사용했는지, 매크로 이름과 저장 파일이 맞는지 확인합니다.
Excel 시작 작업에서 새 Excel 프로세스 중첩과 추가 기능 및 매크로 로드 옵션을 확인합니다.
디버그를 눌러 강조된 코드 줄의 Workbook, Worksheet, Range와 호출한 메서드를 확인합니다. 오류 번호만으로 원인을 단정하지 않습니다.
ActiveWorkbook, ActiveSheet, Select와 Selection 의존성을 확인하고 대상 통합 문서와 시트를 변수로 직접 지정합니다.
매크로 안에서 통합 문서나 Excel 프로그램을 먼저 닫았는지 확인합니다.
Excel·Power Automate Desktop 설치 상태, 파일 형식, OneDrive·SharePoint 동기화 위치와 Excel 인스턴스 연결을 확인합니다.
마지막 오류의 작업명과 메시지를 먼저 기록합니다. 중복 처리 위험이 없을 때만 제한된 재시도를 적용합니다.
내용 확인에 사용한 Microsoft 공식 자료
- Microsoft Learn: Power Automate Desktop Excel 작업 참조
- Microsoft Learn: Excel 통합 문서에서 매크로 실행
- Microsoft Learn: Excel 작업을 포함한 데스크톱 흐름 오류 해결
- Microsoft Learn: 데스크톱 흐름에서 오류 처리
- Microsoft Learn: 마지막 오류 가져오기 작업
- Microsoft Learn: Excel Application.ThisWorkbook
- Microsoft Learn: Excel Application.ActiveWorkbook
- Microsoft Learn: Excel Range.ClearContents
- Microsoft Learn: VBA Err 개체
공식 문서 확인일: 2026년 7월 28일

댓글 쓰기