AI 해결 노트 · 2026-09-18 · 실측 2026-09-18

엑셀 매크로 기록 — 만들어진 코드, .xlsm 저장 경고, 다시 열 때 뜨는 보안 경고까지

한 줄로

제목 행에 굵게·배경색·틀 고정을 넣는 손동작을 매크로로 기록해 봤습니다. 만들어진 Sub 매크로1() 의 본문은 11줄이었고, 2월 시트를 띄운 채 돌리니 2월만 바뀌고 3월은 그대로였습니다. 그 파일을 .xlsx 로 저장하려 하자 「다음 기능은 매크로 제외 통합 문서에 저장할 수 없습니다 · VB 프로젝트」 창이 떴고, .xlsm 으로 저장한 파일을 화면에서 여는 것과 같은 보안 규칙으로 다시 여니 매크로 실행이 막힌 채 열렸습니다. 같은 파일에 「인터넷에서 받음」 표시를 붙여 열었을 때도 막혔는데, 이번에는 켤 단추가 없었습니다.

이런 분께

실측 환경

항목
OSMicrosoft Windows 11 Home 10.0.26200 (build 26200)
PowerShell 7.6.6
엑셀Excel 16.0, build 20326, 언어 코드 1042
시험 파일직접 만든 더미 거래장부 — 1월·2월·3월 세 시트, 각 7열 × 26행(머리글 1행 + 자료 25행), 서식 없음
열 구성일자·거래처·담당자·품목·수량·단가·금액
만든 도구openpyxl 3.1.5
코드 꺼내기Python 3.12.10 + olefile (vbaProject.bin 압축 해제)
매크로 설정HKCU\Software\Microsoft\Office\16.0\Excel\SecurityVBAWarnings·AccessVBOM·blockcontentexecutionfrominternet 값 없음. 같은 자리의 정책 경로(HKCU\Software\Policies\...)는 키 자체가 없음

거래처는 가나상사·다라산업 같은 지어낸 이름이고, 담당자는 성 한 글자와 이름 두 글자를 무작위로 붙인 세 글자 값(정아라·강하늘 등)입니다. 시험 대상으로 연 파일은 이 더미 장부와 거기서 나온 파일들뿐입니다.

먼저 밝힐 것. 아래에서 리본을 누르고 키를 치는 동작은 사람 손이 아니라 저희가 PowerShell로 보낸 키 입력(SendKeys)으로 돌렸습니다. 다만 그 입력은 화면의 엑셀이 받은 것이고, 매크로 기록 자체는 엑셀의 기록 기능이 한 일입니다. 아래 코드는 저희가 쓴 것이 아니라 기록기가 뱉은 것을 파일에서 꺼낸 것입니다.

1. 기록 시작

리본에서 보기 탭 → 매크로 그룹 → 「매크로」 단추를 누르면 목록이 펼쳐지고, 그 안에 「매크로 기록」이 있습니다. 개발 도구 탭을 켜지 않아도 여기서 됩니다. 저희가 보낸 키는 Alt+WMR 이었고, 그러자 앞에 나온 창의 제목이 「매크로 기록」으로 바뀌었습니다.

매크로 기록 창 — 매크로 이름·바로 가기 키·매크로 저장 위치·설명
매크로 기록 창 — 매크로 이름·바로 가기 키·매크로 저장 위치·설명

칸은 네 개입니다.

저희는 아무것도 고치지 않고 Enter를 눌렀고, 결과 파일에 매크로1 이 생겼습니다. 이 순간부터 손동작이 코드로 적힙니다.

2. 기록 중에 한 동작

1월 시트에서 다음 순서로 눌렀습니다.

Ctrl+Home        A1 로
Shift+Space      1행 전체 선택
Ctrl+B           굵게
Alt+H, H         홈 탭 → 채우기 색 갤러리 → 아래·아래·Enter
Ctrl+Home, ↓     A2 로
Alt+W, F, F      보기 탭 → 틀 고정 → 틀 고정

끝난 뒤 값을 읽으니 이렇게 들어가 있었습니다.

A1.Font.Bold        = True
A1.Interior.Color   = 14277081
A1.Interior.Pattern = 1
ActiveWindow.FreezePanes = True  SplitRow=1  SplitColumn=0

기록을 멈추는 자리는 시작한 자리와 같습니다. 저희는 Alt+WMR 을 한 번 더 보내서 멈췄습니다.

기록 중인 화면 — 1행에 굵게·회색 배경이 들어갔고 2행 위에 고정선이 생겼다
기록 중인 화면 — 1행에 굵게·회색 배경이 들어갔고 2행 위에 고정선이 생겼다

이 그림의 상태 표시줄 왼쪽, 「준비」 옆에 작은 네모 단추가 하나 보입니다. 그 단추를 눌러도 멈추는지는 확인하지 않았습니다.

3. 만들어진 코드

기록이 끝난 통합 문서를 .xlsm 으로 저장하니 9,690바이트이던 파일이 17,508바이트가 됐습니다. 늘어난 몫은 7,818바이트인데, 그 안을 열어 보면 원본에 없던 항목 하나가 들어와 있습니다.

xl/vbaProject.bin    압축전 10752  압축후 3602      <- 매크로가 들어가는 자리
xl/sharedStrings.xml 압축전  3970  압축후  856      <- 원본 .xlsx 에는 없던 항목

늘어난 7,818바이트가 전부 매크로 몫은 아닙니다. 엑셀이 다시 저장하면서 시트 XML과 글자 목록을 자기 방식으로 새로 쓴 몫이 섞여 있습니다. 확실한 건 항목 수가 11개에서 13개로 늘고 xl/vbaProject.bin 이 생겼다는 것입니다.

그 안에서 꺼낸 코드 전문입니다.

Attribute VB_Name = "Module1"
Sub 매크로1()
Attribute 매크로1.VB_ProcData.VB_Invoke_Func = " \n14"
'
' 매크로1 매크로
'

'
    Rows("1:1").Select
    Selection.Font.Bold = True
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
        .PatternTintAndShade = 0
    End With
    Range("A2").Select
    ActiveWindow.FreezePanes = True
End Sub

읽어 둘 대목이 두 군데 있습니다. Rows("1:1") 에는 시트 이름이 없습니다. 기록기는 「지금 보고 있는 시트의 1행」이라고만 적기 때문에, 돌릴 때 어느 시트를 띄워 두었느냐로 결과가 갈립니다. 그리고 색이 .Color = 14277081 같은 숫자가 아니라 .ThemeColor = xlThemeColorDark1.TintAndShade = -0.149998474074526 으로 적혔습니다. 갤러리에서 고른 색이 테마에 묶인 색이어서 그런 것으로 보이는데, 테마를 바꿔서 이 매크로가 칠하는 색이 따라 바뀌는지는 시험하지 않았습니다.

저희는 편집기 창을 띄우는 대신 파일 안의 vbaProject.bin 을 파이썬으로 풀어 읽었습니다. 자동화로 Workbook.VBProject 를 조회하면 VBComponents 개수가 0으로 나와서 코드를 읽을 수 없었기 때문입니다. 그 원인은 확인하지 못했습니다.

4. 다른 시트에서 실행

2월 시트를 띄운 채로 매크로1 을 돌렸습니다. 실행 앞뒤로 세 시트를 모두 읽은 값입니다.

시트실행 전실행 후
1월굵게 True · 색 14277081 · 고정 True그대로
2월굵게 False · 색 16777215 · 고정 False굵게 True · 색 14277081 · 고정 True
3월굵게 False · 색 16777215 · 고정 False그대로

이번에 기록된 매크로는 실행할 때 띄워 둔 시트에만 들었습니다. 나머지 시트까지 한 번에 처리하는 방법은 시험하지 않았습니다.

5. .xlsx 로 저장하려 하면

매크로가 든 통합 문서를 .xlsx(매크로 제외 형식)로 저장하려 하면 이 창이 뜹니다.

매크로 제외 통합 문서로 저장할 수 없다는 경고 창
매크로 제외 통합 문서로 저장할 수 없다는 경고 창

창 제목은 「Microsoft Excel」이고, 본문 첫 줄이 「다음 기능은 매크로 제외 통합 문서에 저장할 수 없습니다.」, 그 아래 점 하나짜리 목록에 「VB 프로젝트」가 적혀 있습니다. 이어지는 문장에 「돌아가서 파일 형식을 매크로 사용 파일 형식(.xlsm)으로 변경하세요」가 나옵니다. 아래 단추는 셋입니다.

저희는 「돌아가기(B)」를 눌렀고, 저장 호출은 이 오류로 끝났습니다. 대상 .xlsx 파일은 만들어지지 않았습니다.

VB 프로젝트와 XLM 시트는 매크로 제외 통합 문서에 저장할 수 없습니다.

「저장(S)」을 눌렀을 때 어떻게 되는지는 눌러 보지 않았습니다. 대신 경고를 아예 띄우지 않는 설정(DisplayAlerts = False)으로 같은 저장을 시켜 봤는데, 오류 없이 끝났고 나온 .xlsx 안에는 xl/vbaProject.bin 이 없었습니다. 항목이 13개에서 12개로 줄고 크기는 13,859바이트였습니다. 경고를 지나쳐 저장하면 매크로가 빠진다는 뜻입니다. 이번 시험에서 매크로가 남은 쪽은 SaveAs(..., 52) 로 저장한 .xlsm 이었습니다.

6. 다시 열 때 나오는 보안 경고

.xlsm 파일을 화면에서 여는 것과 같은 보안 규칙(AutomationSecurity = 2)으로 열어 봤습니다. 리본 바로 아래에 옅은 노란 띠가 붙은 채로 열립니다.

보안 경고 줄 — 매크로를 사용할 수 없도록 설정했습니다 · 콘텐츠 사용
보안 경고 줄 — 매크로를 사용할 수 없도록 설정했습니다 · 콘텐츠 사용

띠에 적힌 말은 느낌표 아이콘 다음에 굵은 「보안 경고」, 이어서 「매크로를 사용할 수 없도록 설정했습니다.」이고, 오른쪽에 「콘텐츠 사용」 단추가 있습니다. 이 상태에서 매크로를 돌려 보면 이렇게 거절됩니다(아래는 파일 이름이 들어간 자리를 그대로 옮긴 것입니다).

''KO2_거래장부_기록본.xlsm'!매크로1' 매크로를 실행할 수 없습니다.
이 통합 문서에서 사용할 수 없는 매크로이거나 모든 매크로를 사용하지 못할 수 있습니다.

「콘텐츠 사용」을 누른 뒤에 어떻게 되는지는 눌러 보지 않았습니다. 실행이 막힌다는 데까지가 저희가 확인한 부분입니다.

7. 밖에서 받은 파일이면 띠 색이 다릅니다

같은 파일을 복사해 「인터넷에서 내려받음」 표시(Zone.IdentifierZoneId=3)를 붙이고 열었습니다. 이번에는 띠가 옅은 분홍이고, 왼쪽 아이콘도 붉은 금지 표시입니다.

보안 위험 줄 — 출처를 신뢰할 수 없어 매크로 실행을 차단했습니다 · 자세한 정보
보안 위험 줄 — 출처를 신뢰할 수 없어 매크로 실행을 차단했습니다 · 자세한 정보

굵은 「보안 위험」 다음에 「Microsoft는 이 파일의 출처를 신뢰할 수 없기 때문에 매크로 실행을 차단했습니다.」가 적혀 있고, 오른쪽에는 「자세한 정보」 단추뿐입니다. 앞 그림에 있던 「콘텐츠 사용」 같은 켜는 단추가 없습니다. 파일 자체는 열렸고 표도 다 보이는데, 매크로 실행은 위와 같은 문구로 막혔습니다.

메일 첨부나 메신저로 받은 .xlsm 을 열었을 때 이 띠를 보신 적이 있을 겁니다. 회사에서 정책으로 매크로를 더 잠가 두는 경우도 있는데(위 표의 VBAWarnings·blockcontentexecutionfrominternet 값을 관리자가 지정하는 방식), 그런 PC에서 화면이 어떻게 나오는지는 확인하지 못했습니다. 이 PC에는 그 값들이 없었고 정책 경로는 키 자체가 없었습니다.

그러니 매크로로 업무를 줄이기 전에 「이 파일이 남에게 건너갔을 때도 돌아가는가」를 먼저 따져 보시는 편이 낫습니다. 나 혼자 쓰는 정리용이면 잘 맞고, 여러 사람에게 돌리는 양식이면 매크로 없이 되는 방법을 먼저 찾는 쪽이 덜 막힙니다.

결과

단계어디서확인한 값
기록 시작보기 → 매크로 → 매크로 기록 (Alt+W, M, R)창에 이름 매크로1, 저장 위치 「현재 통합 문서」가 미리 들어 있음
기록 중지같은 키를 한 번 더
기록 결과xl/vbaProject.bin압축 전 10,752바이트 · Sub 매크로1() 본문 11줄
다른 시트 실행띄워 둔 시트에만 적용(2월 바뀜, 3월 그대로)
.xlsx 저장경고 창「VB 프로젝트」 저장 불가 · 경고를 끄고 저장하면 vbaProject.bin 사라짐
.xlsm 저장SaveAs(..., 52)9,690 → 17,508바이트, 항목 11개 → 13개
다시 열기(내 PC 파일)노란 띠「보안 경고」 + 「콘텐츠 사용」, 매크로 실행 막힘
다시 열기(밖에서 받은 파일)분홍 띠「보안 위험」 + 「자세한 정보」, 켤 단추 없음, 매크로 실행 막힘

실패한 것

확인하지 않은 것

함께 보기