발행일 2026-10-04 · 글쓴이 강성희 (랑잠AI교육연구원 대표 · 한국AI디지털교육협회 협회장)

안녕하세요.
한국AI디지털교육협회 협회장, 랑잠AI교육연구원 대표, AI 강사로 활동하고 있는 강성희입니다.
핵심 요약
하네스는 버튼이 아니라 규칙 문서·서식·검토 체크리스트라는 설계라서, 업무망의 공공 AI에는 규칙 문서를 '머리글 프롬프트'로 매번 맨 위에 붙여 넣고, AI가 없으면 같은 서식으로 사람이 수동 루프를 돌리면 됩니다. 집계처럼 코드가 필요한 일은 열 이름·형식·더미 10행만 인터넷망 PC에서 보내 VBA를 받아, 가상 데이터로 검증한 뒤 기관의 망간 자료전송 절차로 들여옵니다. 상용 AI에는 기관 내부자료·개인정보를 넣지 않고, 구조의 등급 판단은 보안담당관이 합니다.
혹시 이런 경험 있으신가요?
월말마다 읍면동에서 올라온 실적 엑셀 10여 개를 한 장으로 합치고 집계하느라 야근을 하면서, "인터넷망 PC의 챗GPT한테 시키면 금방일 텐데, 이건 내부자료라 안 되지" 하고 손으로 다시 더한 경험이요.
업무망에 공공 AI가 들어왔다는데 막상 열어 보니 1편에서 배운 '프로젝트' 같은 버튼이 안 보여서, "그럼 하네스는 인터넷망에서만 되는 건가" 하고 창을 닫아 버린 경험이요.
공공기관 AX(AI 전환) 교육에서 AI 에이전트 활용을 가르치는 강사로서, 지자체 교육장에서 "우리는 망이 분리돼 있어서요" 다음에 자주 따라오는 말이 "그럼 업무망에서는 어떻게 하죠?"입니다. 1편에서 네 가지 상황별 적용법을 표 한 장으로 보여 드렸는데, 오늘은 그중 업무망 쪽 세 칸을 손이 따라 움직일 만큼 자세히 풉니다. 공공 AI에 규칙 문서를 머리글로 붙이는 법, AI가 없을 때 사람이 돌리는 수동 루프, 그리고 '구조만' 반출해 코드를 받아 반입하는 절차와 한계예요. 제가 공직자·재직자 교육에서 늘 강조하는 원칙이 그 셋을 관통합니다. AI에게는 데이터가 아니라 구조를 보여 준다.
이 글은 국가정보원 「챗GPT 등 생성형 AI 활용 보안 가이드라인」 원문, 국가 사이버보안 기본지침(2026년 5월 시행)과 범정부 AI 공통기반·지자체 자체 언어모델 관련 보도, 마이크로소프트 엑셀 공식 지원 문서(매크로 설정·실행), 하네스 엔지니어링 원문 글(Hashimoto·OpenAI·martinfowler.com)을 직접 확인해 정리했고, 공공기관 교육 현장과 제 블로그 자동화 운영 경험을 더했습니다. — 강성희 (랑잠AI교육연구원 대표 · 한국AI디지털교육협회 협회장, AX(AI 전환)·AI 에이전트 교육 전문가, 공공기관·기업·학교 200여 곳 생성형 AI 교육 진행)
오늘 이 글 하나면 업무망에서 무엇이 되고 무엇이 안 되는지의 지도, 공공 AI 채팅창에 그대로 붙여 넣는 머리글 프롬프트 원문, AI 없이도 돌아가는 수동 루프 서식과 기록지, 열 이름과 더미값만 반출해 VBA를 받아 업무망에 들이는 절차, 그리고 더미 10행으로 하는 30분 실습까지 한 번에 잡을 수 있습니다. 이번 글은 시·군·구청과 읍면동 공직자를 위한 하네스·루프 시리즈 3편(1편: 입문, 2편: 민원 답변 초안 하네스)이고, 하네스 엔지니어링의 두 번째 이야기예요.
목차
- 업무망에서 AI, 무엇이 되고 무엇이 안 되나? — 장애물 지도
- 공공 AI에 '머리글 프롬프트' 하네스 — 프로젝트 버튼이 없어도
- AI가 없을 때 사람이 돌리는 수동 루프 — 서식·체크리스트·기록
- '구조만' 반출 → 코드 반입 — 절차와 한계
- 그대로 복사해 쓰는 '구조만' 프롬프트 — 월간 통계 집계
- 받은 VBA, 업무망에 들이기 전에 무엇을 확인하나?
- 챗GPT·제미나이에 그냥 묻는 것과 무엇이 다른가?
- 30분 실습 — 더미 10행으로 월간 집계 VBA 받아 반입 전 검증
- 반출 전 점검표와 흔한 실패 세 가지
- 자주 묻는 질문 FAQ
1. 업무망에서 AI, 무엇이 되고 무엇이 안 되나? — 장애물 지도
제도부터 짧게요. 상용 생성형 AI에 대한 원칙은 국가정보원 「챗GPT 등 생성형 AI 활용 보안 가이드라인」(2023년 6월) 원문이 분명합니다. "기관 내부(업무)망에서의 서비스 사용시 별도 내부 전용 서비스로 한정하여 사용", "기관 인터넷망에서의 서비스 사용시 기관 민감데이터 미활용 등 유의 사용". 그리고 2026년 5월 1일 시행된 「국가 사이버보안 기본지침」은 종전의 망분리 조항을 삭제하는 대신 업무정보 등급 식별 조항과 인공지능시스템 보안 조항을 새로 두었어요. 즉 '무엇을 밖에 내보내도 되는가'는 이제 기관이 정보의 등급을 식별해 판단하는 구조입니다. 그래서 이 글에서 "된다"고 쓰는 것은 모두 "가이드라인의 취지에 어긋나지 않는 범위로 볼 수 있다"는 뜻이고, 최종 판단은 기관의 보안담당관이 합니다.
업무망 쪽 도구도 생겼습니다. 행정안전부·과학기술정보통신부의 '범정부 AI 공통기반'이 2025년 11월 24일 서비스 시작을 알리며 중앙·지방정부가 행정 내부망에서 AI 챗서비스 2종을 쓰도록 시범 운영을 거쳐 확대하는 계획을 밝혔고, 서울시가 행정망 안에 자체 언어모델을 구축한 것을 비롯해 광주·양산·남양주·광진구처럼 자체 언어모델(sLLM)을 내부망에 둔 지자체도 늘었어요. 그래서 2026년 10월 현재 업무망에서 만나는 경우는 셋입니다. 공공 AI가 있는 경우, 아직 없는 경우, 그리고 어느 쪽이든 계산 코드가 필요한 경우예요.

▣ 장애물 지도 — 네 상황에서 할 수 있는 것과 할 수 없는 것
| 상황 | 할 수 있는 것 | 할 수 없는 것 | 근거 · 판단 주체 |
|---|---|---|---|
| 인터넷망 PC + 상용 AI(ChatGPT·제미나이·클로드) | 공개 자료로 하네스·루프(1·2편), 열 이름·더미값만 보내 코드 받기 | 기관 내부자료·개인정보 입력, 기관 드라이브·메일 연결 | "기관 민감데이터 미활용", "기관 내부자료 등 민감정보 입력 금지" — 등급 판단은 기관 |
| 업무망 + 공공 AI(범정부 AI 공통기반·자체 sLLM) | 규칙 문서를 머리글 프롬프트로 붙이는 하네스, 사람이 시각을 정해 돌리는 반자동 루프 | 기관 이용 지침 밖의 자료 입력(개인정보 등) | "별도 내부 전용 서비스로 한정" — 입력 범위는 기관의 이용 지침 |
| 업무망 + AI 없음 | 같은 규칙 문서·서식·체크리스트로 사람이 돌리는 수동 루프 | — | 하네스는 도구가 없어도 성립 |
| 구조만 반출 → 코드 반입 | 열 이름·형식·더미값 반출, 코드(글자) 반입 | 실데이터·비공개 사업명·대상자 범주 반출 | 등급 판단은 보안담당관, 반입은 망간 자료전송 절차 |
표에서 보이듯 업무망에서 막히는 것은 데이터가 밖으로 나가는 것이지, 규칙 문서·서식·체크리스트라는 '설계'가 아니에요. 1편에서 "하네스는 버튼이 아니라 설계"라고 했던 말이 오늘 글 전체의 전제입니다. 2절부터 세 칸을 하나씩 열어 볼게요.
2. 공공 AI에 '머리글 프롬프트' 하네스 — 프로젝트 버튼이 없어도
비유로 시작합니다. 기안문 서식에는 결재란이 미리 인쇄되어 있죠. 누가 기안하든 그 칸을 거치게 되어 있어요. 머리글 프롬프트는 채팅 맨 위에 결재란을 매번 인쇄해 넣는 것입니다. 인터넷망의 상용 AI에서는 1·2편처럼 프로젝트나 스킬에 규칙 문서를 한 번 저장해 두면 되지만, 업무망의 공공 AI는 기관마다 화면이 다르고 지침을 저장하는 기능이 없을 수 있어요. 그래도 하네스는 성립합니다. 규칙 문서를 파일로 저장해 두고, 요청할 때마다 맨 위에 붙여 넣으면 되거든요.

1단계. 머리글 파일 만들기
업무망 PC에 '머리글_월간보고_v1.txt'(또는 한글 파일) 하나를 만듭니다. 내용은 아래 원문이에요. 파일 이름의 v1이 버전이고, 실수 하나가 나올 때마다 규칙 한 줄을 더해 v2, v3로 올립니다. 과 공유폴더에 두면 과 전체의 서식이 통일됩니다.
2단계. 요청할 때마다 맨 위에 붙여넣기
공공 AI 채팅창을 열 때마다 머리글 전체를 먼저 붙이고, 그 아래에 오늘의 자료(집계표)와 요청 한 줄을 씁니다. 새 대화마다 반복해요. 번거로워 보이지만 복사·붙여넣기 두 번이고, 그 두 번이 "어제와 오늘 서식이 다른" 문제를 없앱니다.
3단계. 출력을 체크리스트로 검사하기
머리글 끝에 자체 검증 항목을 넣어 두면 AI가 먼저 ○/×를 표시합니다. 그래도 사람이 다시 한 번 봅니다. AI의 자체 검증은 1차 검토, 담당자의 검토가 2차예요.
▣ 머리글 프롬프트 원문 (그대로 복사해 쓰세요 — 기관·부서명과 서식만 바꿉니다)
■ 머리글 프롬프트 — 월간 실적 보고 문안 v1 (업무망 공공 AI용, 요청할 때마다 맨 위에 붙여넣기)
[역할] ○○군 △△과 월간 실적 보고 문안 작성 보조. 최종 작성자와 책임은 담당 공무원.
[입력 게이트] 아래 자료에 성명·주민등록번호·주소·연락처·계좌번호 등 개인정보가 보이면 작성을 멈추고 "개인정보 제거 요청"만 출력한다.
[근거 규칙] 수치는 아래 붙여 넣는 집계표의 숫자만 쓴다. 표에 없는 숫자·비율·전년 대비는 만들지 않는다. 계산이 필요하면 식을 함께 적는다.
[출처 규칙] 법령·지침·보도자료를 인용할 때는 문장 끝에 출처(문서명과 조문, 또는 주소)를 붙인다. 출처를 붙일 수 없는 문장은 삭제한다.
[서식] ① 총괄(2줄) ② 읍면동별 실적 표 ③ 특이사항(증감이 큰 항목, 표의 수치로만) ④ 다음 달 계획(담당자가 채울 빈칸) — 개조식, 공문체.
[표기] 첫 줄 "※ AI 초안(검토 전)", 끝 줄 "검토자/일자: ____".
[자체 검증 — 출력 전] 개인정보 0건 / 표에 없는 숫자 0건 / 출처 없는 인용 문장 0건 / 확정·약속 표현 0건. 네 항목을 ○/×로 먼저 표시하고, ×가 있으면 고친 뒤 출력한다.
[오늘 요청] (이 아래에 집계표를 붙여 넣고 요청을 한 줄로 쓴다)
아래 그림은 실제 캡처가 아니라 붙여 넣는 순서를 재현한 것이라, 실제 화면과 배치가 다를 수 있습니다. 공공 AI는 기관마다 화면이 다르므로, 그림은 '맨 위에 머리글, 그 아래에 자료와 요청'이라는 순서만 보여 드리는 것이에요.

[출처 규칙]은 공공 AI에서 특히 중요해요. 출처를 함께 보여 주는 방식의 서비스라면 "출처 없는 문장은 삭제"라는 한 줄이 AI가 그럴듯하게 지어낸 문장을 걸러 내는 가장 단순한 센서가 됩니다. 2편의 민원 답변 하네스에서 "제공된 조문만 인용"이 했던 역할과 같아요. 주의할 점은, 내부 전용 서비스라 해도 개인정보와 비공개 자료를 어디까지 넣을 수 있는지는 기관의 이용 지침이 정한다는 것입니다. 머리글의 [입력 게이트]는 그 지침을 보조하는 장치이지 대신하는 장치가 아니에요.
하네스는 버튼이 아니라 설계입니다. 프로젝트 기능이 없으면, 규칙 문서를 맨 위에 매번 붙여 넣는 것으로 같은 틀이 됩니다.
3. AI가 없을 때 사람이 돌리는 수동 루프 — 서식·체크리스트·기록
"우리 업무망엔 아직 공공 AI가 없는데요." 그래도 하네스와 루프는 만들 수 있습니다. 1편에서 루프를 당직표에 비유했죠. 당직표에는 AI가 없어요. 누가, 언제, 무엇을 점검하고, 이상 없으면 "이상 없음" 한 줄을 남기는 규칙이 있을 뿐이죠. 수동 루프는 같은 규칙 문서·서식·체크리스트를 사람이 돌리는 것입니다. 나중에 공공 AI가 들어오면 2절의 머리글로, 인터넷망의 공개 자료 업무는 1·2편의 프로젝트로 그대로 옮겨 가요. 지금 서식을 만들어 두는 것이 가장 빠른 준비입니다.

1단계. 서식 한 장 꺼내기
2절의 머리글 프롬프트에서 [역할]·[근거 규칙]·[서식]·[표기]·[자체 검증]을 그대로 옮긴 한 장짜리 '작성 규칙'을 만듭니다. AI용 문장이 사람에게도 그대로 통해요. "표에 없는 숫자를 만들지 않는다"는 사람에게도 필요한 규칙이니까요.
2단계. 초안 쓰기
담당자가 서식대로 초안을 씁니다. 첫 줄의 "※ 초안(검토 전)" 표기도 그대로 둡니다.
3단계. 체크리스트로 대조하기
자체 검증 네 항목(개인정보 0건 / 표에 없는 숫자 0건 / 출처 없는 인용 0건 / 확정·약속 표현 0건)을 ○/×로 표시합니다. 가능하면 쓴 사람이 아닌 다른 사람이 봅니다. 1편에서 "일을 한 AI가 자기 결과를 채점하면 후하다"고 했는데, 사람도 같아요.
4단계. × 항목만 고치기
전부 다시 쓰지 않습니다. ×가 난 항목만 고치고 3단계로 돌아갑니다.
5단계. 기록 한 줄 남기기
아래 기록지에 한 줄을 적습니다. 어떤 ×가 반복되는지가 보이면, 그것이 작성 규칙에 한 줄을 더할 자리예요. 실수 하나, 규칙 한 줄. 해시모토의 원칙은 사람이 돌리는 루프에서도 똑같습니다.
▣ 수동 루프 기록지 (한 회차에 한 줄)
| 회차 | 날짜 | 입력(무엇으로) | 체크1 개인정보 | 체크2 숫자 | 체크3 출처 | 체크4 표현 | 수정한 것 | 규칙 변경 | 담당 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 10/06 | 9월 집계표 v1 | ○ | × 전년 대비 임의 계산 | ○ | ○ | 전년 대비 삭제 | v1→v2 "비율은 표에 있을 때만" | 홍 |
| 2 | 10/06 | 9월 집계표 v1 | ○ | ○ | ○ | ○ | — | — | 홍 |
▣ 종료 조건과 정지 조건 (당직표에도 끝나는 시각이 있듯)
- 종료 조건 — 네 항목 전부 ○. 그때 "검토자/일자"에 서명하고 결재로 올립니다.
- 정지 조건 — 같은 문서로 3회를 돌아도 ×가 남으면 멈추고 상급자 검토로 넘깁니다. 끝없이 고치는 것은 루프가 아니라 야근이에요. 정지 조건 다섯 가지는 5편에서 자세히 다룹니다.
- 기록 — 기록지는 과 공유폴더에. 감사 때 "왜 이렇게 썼나"를 재현하는 자료가 되고, 공공 AI가 들어왔을 때 머리글 v1의 재료가 됩니다.
4. '구조만' 반출 → 코드 반입 — 절차와 한계
머리글과 수동 루프로 안 되는 일이 하나 남아요. 계산입니다. 읍면동 10여 개의 실적 시트를 합치고 집계하는 일은 문장이 아니라 코드가 필요하고, 공공 AI가 코드를 써 준다 해도 엑셀에 붙여 실행하는 과정은 같습니다. 그래서 세 번째 길이 '구조만' 반출 → 코드 반입이에요. 제가 교육에서 늘 강조하는 원칙이 그대로 절차가 됩니다. 실데이터는 청사 밖으로 한 줄도 나가지 않고, 파일이 '어떻게 생겼는지'만 인터넷망에서 보내 코드를 받아, 업무망에서 돌리는 것이죠.

1단계. 업무망에서 구조 적기
실제 파일을 열어 복사하는 것이 아니라, 열 이름·형식·행 수·바꿀 규칙을 글로 적고 더미 10행을 손으로 지어냅니다. 읍면동 이름도 가산읍·나루면처럼 가짜로 씁니다. 실제 행을 "예시로 몇 줄만" 붙이는 순간 구조가 아니라 데이터 반출이에요.
2단계. 보안담당관 확인
적은 구조를 보안담당관에게 보여 주고 "이 내용이 인터넷망 상용 AI에 입력해도 되는 정보인가"를 확인받습니다. 열 이름·서식·더미값은 가이드라인이 말하는 "기관 민감데이터"에 해당하지 않을 가능성이 높지만, 기본지침이 업무정보 등급 식별을 기관의 일로 둔 이상 판단의 주체는 기관입니다. 비공개 사업명, 대상자 범주(예: 특정 급여 수급자)가 열 이름에 드러나면 결론이 달라질 수 있어요.
3단계. 인터넷망 PC에서 코드 받기
5절의 프롬프트를 보내 VBA 코드를 글자로 받습니다. 파일(.xlsm)로 받지 않습니다.
4단계. 더미 10행으로 1차 검증
엑셀이 있는 인터넷망 PC나 개인 PC에서 더미 10행만 넣고 실행해 기대값 표와 대조합니다. 더미라서 어느 PC에서 해도 됩니다.
5단계. 반입
코드 텍스트·프롬프트·기대값 표 세 가지를 기관의 망간 자료전송 절차(자료전송 시스템, 보안 USB 등 기관이 정한 경로)로 업무망에 들입니다. 기관 절차에서 허용한다면, 20줄짜리 코드는 화면을 보고 타이핑하는 것도 방법이에요. 코드를 짧게 받는 이유가 여기에도 있습니다.
6단계. 업무망에서 2차 검증 후 실행
업무망 PC에서도 더미 10행으로 한 번 더 돌려 기대값과 같은지 본 뒤, 실데이터는 복사본에서 실행합니다. 결과와 함께 기록지에 한 줄을 남깁니다.
솔직하게 말씀드릴게요. 이 길에는 한계가 셋 있습니다. 먼저, 코드가 틀려도 AI는 모릅니다. 그래서 4단계와 6단계의 검증을 빼면 안 돼요. 다음으로, 반입 절차에 시간이 듭니다. 급한 일보다 매월 반복되는 일에 맞는 길이에요. 마지막으로, 규격값·예산액·단가처럼 숫자 자체가 비공개인 경우에는 더미값만 보내더라도 열 이름이나 범위에서 유추될 수 있으니, 그런 열은 구조에서도 빼고 "해당 열은 시트에서 읽어라"로만 적습니다. 그리고 세 한계보다 앞서는 전제가 하나 있어요. 가이드라인의 취지에 어긋나지 않는 범위로 볼 수 있다는 것과 우리 기관에서 허용된다는 것은 다른 말이고, 그 사이를 메우는 사람이 보안담당관입니다.
구조는 밖으로, 데이터는 청사 안에, 코드는 업무망에서. 반출하는 것은 글로 적은 구조와 손으로 지어낸 더미값뿐입니다.
5. 그대로 복사해 쓰는 '구조만' 프롬프트 — 월간 통계 집계
읍면동별 월간 실적 집계로 해 볼게요. 아래 프롬프트는 인터넷망 PC의 ChatGPT·Gemini·Claude 어느 채팅창에 넣어도 됩니다. 값은 전부 더미이고, 실제 파일은 열지 않은 채 쓸 수 있게 만들었어요. 1편에서 "열 이름은 읍면동·사업명·건수·금액이고 약 300행, 값은 더미, 외부 통신 없는 VBA와 검증 수식 3개를 달라"고 한 줄로 적었던 규칙 문서의 완성형입니다.

▣ 프롬프트 원문 (그대로 복사해 쓰세요 — 시트·열 이름만 우리 서식에 맞게 바꿉니다)
구조만 반출 — 월간 실적 집계 VBA 요청 v1
[상황] 지자체 ○○과에서 읍면동별 월간 실적을 집계합니다. 기관 규정상 실제 데이터는 보낼 수 없어 열 이름·형식·행 수·규칙·더미 10행만 적습니다. 아래 값은 전부 더미입니다.
[파일 구조] 엑셀 통합 문서 1개. 시트 "실적": A 읍면동(문자) / B 사업명(문자) / C 건수(정수) / D 금액(정수, 천원). 약 300행, 1행은 제목. 빈 시트 "월간집계"를 미리 만들어 둠.
[더미 10행 — 실적 시트]
가산읍 | 경로당 냉방비 | 12 | 3600
가산읍 | 아동 급식 | 8 | 1200
나루면 | 경로당 냉방비 | 7 | 2100
나루면 | 아동 급식 | 5 | 750
나루면 | 마을버스 지원 | 2 | 900
다복면 | 경로당 냉방비 | 9 | 2700
다복면 | 아동 급식 | 3 | 450
라원동 | 경로당 냉방비 | 4 | 1200
라원동 | 마을버스 지원 | 1 | 450
라원동 | 아동 급식 | 6 | 900
[원하는 결과] "월간집계" 시트에 읍면동별 건수 합계·금액 합계 표(1행 제목, 마지막 행 총계). 합계는 값이 아니라 수식(SUMIF)으로 남겨 사람이 검증할 수 있게 한다.
[코드 조건] ① 엑셀 VBA, Sub 한 개, 20줄 안팎 ② 시트 이름은 코드 맨 위에 변수로 ③ 인터넷 연결·외부 파일 접근·메일 발송·셸 명령·외부 라이브러리 참조 등 외부 통신 없음 ④ Workbook_Open 같은 자동 실행 없음, 원본 시트는 수정하지 않는다 ⑤ 줄마다 한글 주석 ⑥ 쓰지 않는 변수나 숨은 기능 없음
[함께 줄 것] 코드 아래에 (1) 위 더미 10행의 기대값 표(읍면동 4곳과 총계) (2) 원본 건수 합계·금액 합계와 대조하는 검증 수식 2개 (3) 실행 중 나기 쉬운 오류 3가지와 원인
[금지] 실제 데이터를 달라고 하지 않는다. 실행해 보지 않았으면서 "검증했다"고 쓰지 않는다. 모르는 것은 "가정"이라고 표시한다.
프롬프트의 일곱 블록은 하네스의 세 요소예요. [상황]·[파일 구조]·[원하는 결과]는 지침, [코드 조건]과 [금지]는 권한 경계, [더미 10행]과 [함께 줄 것]은 센서입니다. 더미 10행의 기대값은 코드를 받기 전에 손으로 먼저 계산해 둡니다.
▣ 더미 10행의 기대값 (받은 코드를 돌렸을 때 이 표와 같아야 합니다)
| 읍면동 | 건수 합계 | 금액 합계(천원) |
|---|---|---|
| 가산읍 | 20 | 4,800 |
| 나루면 | 14 | 3,750 |
| 다복면 | 12 | 3,150 |
| 라원동 | 11 | 2,550 |
| 총계 | 57 | 14,250 |
6. 받은 VBA, 업무망에 들이기 전에 무엇을 확인하나?
코드는 받았는데 "이걸 업무망 PC에 넣어도 되나"가 다음 질문이죠. 두 가지를 봅니다. 코드가 안전한가(검토)와 맞는가(검증). 그다음에 엑셀에서 실행하는 순서는 공식 지원 문서의 메뉴 이름대로예요.

1단계. 코드 검토 — F5 전에 보는 5가지
- 외부 통신 단어가 없는가 — Shell, CreateObject, FileSystemObject, XMLHTTP, WinHttp, URLDownload, Outlook, SendKeys, Kill, Environ. 외부 실행·통신·파일 삭제에 쓰이는 단어들이에요. 하나라도 있으면 그 줄의 이유를 묻고, 설명이 궁색하면 빼 달라고 합니다.
- 원본 시트에 쓰는 줄이 없는가 — 결과는 새 시트에만. 원본 시트 이름 뒤에
.Value =나.Clear가 붙어 있으면 의심합니다. - 시트 이름이 코드 맨 위에 모여 있는가 — 중간에 "Sheet3" 같은 이름이 박혀 있으면 "변수로 올려 줘".
- 자동 실행이 없는가 — Workbook_Open, Auto_Open, Application.OnTime 이 보이면 뺍니다. 매크로는 사람이 F5를 눌렀을 때만.
- 주석과 동작이 맞는가 — 특히
Cells.Clear가 어느 시트를 지우는지. 결과 시트만 지워야 합니다.
모르는 줄은 코드를 받은 그 채팅창에서 "이 줄은 뭐 하는 줄이야?"라고 그 줄만 되물으면 됩니다. 다 이해할 필요는 없고, 다섯 가지만 통과하면 돼요.
2단계. 실행 순서 7가지
- 원본 백업 — 실데이터 파일에서는 처음 실행하지 않습니다. 복사본에서, 처음엔 더미 시트만 넣고.
- 매크로 보안 설정 확인 — 파일 → 옵션 → 보안 센터 → 보안 센터 설정 → 매크로 설정. 보통은 매크로가 든 파일을 열면 매크로가 꺼진 채 노란 '보안 경고' 띠가 뜨고, '콘텐츠 사용'을 눌러야 돌아갑니다. 기관 정책으로 '알림 없이 모든 매크로 사용 중지'에 고정되어 회색이면 관리자가 변경을 막아 둔 것이니, 임의로 바꾸지 말고 정보화 부서에 "VBA 사용 가능 단말"인지 확인합니다.
- (선택) 개발 도구 탭 — 파일 → 옵션 → 리본 사용자 지정 → '개발 도구' 체크.
- Alt+F11 — Visual Basic 편집기(VBE)가 열립니다.
- 삽입 → 모듈 — 'Module1'과 흰 코드 창이 생깁니다.
- 붙여넣기 → F5 — 코드를 붙이고 커서를 Sub와 End Sub 사이에 둔 채 F5(또는 Alt+F8 → 매크로 선택 → 실행). 둥근 따옴표(“ ”)로 바뀌어 들어오면 컴파일 오류가 나니 코드 블록의 '복사' 단추로 복사합니다.
- 저장 — 'Excel 매크로 사용 통합 문서(*.xlsm)'로. 일반 .xlsx로 저장하면 코드가 사라집니다.
3단계. 반입할 때 함께 가져가는 세 가지
코드 텍스트, 프롬프트 원문, 기대값 표. 이 셋이 한 폴더에 있으면 나중에 "이 매크로는 어디서 온 무엇인가"를 누구나 설명할 수 있어요. 참고로 마이크로소프트는 인터넷에서 받은 파일의 매크로를 기본적으로 차단합니다(공식 지원 문서 표현 그대로 "인터넷의 매크로는 Office에서 기본적으로 차단됩니다"). 코드를 파일이 아니라 글자로 받아야 하는 이유가 보안과 실행 양쪽에 있는 셈이죠.
7. 챗GPT·제미나이에 그냥 묻는 것과 무엇이 다른가?
"어차피 AI한테 시키는 건데 뭐가 다르냐"는 질문에, 공공에서는 답이 더 분명합니다. 인터넷망 PC에서 실적 엑셀을 통째로 올려 "집계해 줘"라고 하는 것은 할 수 없고 해서도 안 되는 일이에요. 가이드라인 원문의 "기관 내부자료 등 민감정보 입력 금지"에 바로 걸립니다. 그러니 비교 대상은 '그냥 묻기'와 '하네스'가 아니라, '안 되는 일'과 '되게 만드는 설계'죠.

▣ 같은 일을 두 방식으로 — 월간 통계 집계와 보고 문안
| 관점 | 인터넷망에서 파일을 올려 "집계하고 보고서 써 줘" | 업무망 하네스(구조만 반출 + 머리글 프롬프트/수동 루프) |
|---|---|---|
| 밖으로 나가는 것 | 읍면동별 실적·사업명·금액 전부 | 열 이름·형식·더미 10행뿐 |
| 규정 | "기관 내부자료 등 민감정보 입력 금지"에 저촉 | 데이터 반출 없음 — 구조의 등급은 보안담당관 확인 |
| 결과물 | 그달의 대답 1회분, 다음 달엔 다시 올려야 함 | 코드 1개와 머리글 1장, 매월 같은 기준으로 반복 |
| 검증 | AI가 합계를 틀려도 겉으로는 알기 어려움 | 수식(SUMIF)으로 남긴 합계 + 더미 기대값 표 + 체크리스트 |
| 담당자가 바뀌면 | 요령이 사람 머리에만 남음 | 프롬프트·코드·머리글·기록지가 파일로 남음 — 감사 대응 자료 |
| 맞는 일 | 공개 자료로 하는 단발 질문 | 서식이 고정된 반복 업무(집계·보고·안내문) |
그냥 묻기는 업무망에서 애초에 선택지가 아닙니다. 하네스는 그 자리에 '되는 설계'를 놓는 일이에요.
8. 30분 실습 — 더미 10행으로 월간 집계 VBA 받아 반입 전 검증
기관 자료는 한 줄도 쓰지 않고, 구조만 반출 → 코드 반입의 1~4단계를 체험하는 실습입니다. 전부 더미라서 엑셀이 있는 어느 PC에서 해도 되지만, 실제 반입(5~6단계)은 기관 절차대로 합니다.

1단계. 더미 10행 입력 (5분)
새 통합 문서를 열고 시트 이름을 '실적'으로 바꿉니다. 1행에 읍면동·사업명·건수·금액, 2~11행에 5절의 더미 10행을 넣습니다. 빈 시트 '월간집계'도 추가해 두세요.
2단계. 프롬프트 보내기 (5분)
5절의 원문을 인터넷망 PC의 채팅창에 보냅니다. 코드와 기대값 표, 검증 수식 2개, 오류 3가지가 함께 와야 합니다. 안 오면 "[함께 줄 것]도 주세요"라고 한 번 더.
3단계. 코드 검토 (5분)
6절의 5가지로 봅니다. 모르는 줄은 그 줄만 되묻습니다.
4단계. 실행과 기대값 대조 (10분)
Alt+F11 → 삽입 → 모듈 → 붙여넣기 → F5. "집계 완료: 읍면동 4곳, 원본 10행" 메시지가 뜨고 '월간집계' 시트가 5절의 기대값 표와 같으면 성공이에요. 그다음 사람이 검증 수식 두 개를 직접 넣습니다. 새 시트 '검증'을 하나 만들어 빈 셀에 =SUM(실적!C:C)와 =SUM(실적!D:D)를 넣고 총계 행의 57과 14,250과 같은지 봅니다. '월간집계'에 넣으면 매크로를 다시 돌릴 때 함께 지워지거든요. 검토 의견은 기안자가 아니라 검토자가 쓰는 것이라, 검증 수식은 코드가 아니라 사람이 넣는 편이 좋아요.
5단계. 하네스 작동 확인과 반입 세트 (5분)
'실적' 시트 이름 뒤에 공백을 하나 붙이고 다시 F5. '런타임 오류 9: 아래 첨자 사용이 잘못되었습니다'가 뜨며 멈추는 것이 정상입니다. 지어내지 않고 멈췄으니까요. 프롬프트의 [코드 조건]에 "시트가 없으면 어떤 시트가 없는지 메시지로 알리고 중단한다"를 더해 v2로 올립니다. 공백을 지우고 코드 텍스트·프롬프트·기대값 표를 한 폴더에 모으면 반입 세트 완성이에요.
▣ 이 프롬프트로 받을 수 있는 코드의 예시 (그대로 붙여 넣어 실행할 수 있게 썼습니다)
Sub MonthlySummary()
' [목적] '실적' 시트(A 읍면동, B 사업명, C 건수, D 금액)를 읍면동별로 집계해 '월간집계' 시트에 쓴다
' [바꿀 곳] 아래 두 줄의 시트 이름만 우리 서식에 맞게 고친다. 외부 통신 없음, 자동 실행 없음
Dim srcName As String, outName As String
srcName = "실적" ' 원본 시트 이름(수정하지 않음)
outName = "월간집계" ' 결과 시트 이름(미리 만들어 둔 빈 시트)
Dim ws As Worksheet, wsOut As Worksheet, lastRow As Long, n As Long
Set ws = ThisWorkbook.Worksheets(srcName) ' 원본 시트 연결
Set wsOut = ThisWorkbook.Worksheets(outName) ' 결과 시트 연결
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' A열(읍면동) 기준 마지막 행
If lastRow < 2 Then MsgBox "'" & srcName & "' 시트에 데이터가 없습니다", vbExclamation: Exit Sub ' 제목만 있으면 멈춘다
wsOut.Cells.Clear ' 결과 시트만 비운다
ws.Range("A1:A" & lastRow).Copy wsOut.Range("A1") ' 읍면동 열을 그대로 가져온 뒤
wsOut.Range("A1:A" & lastRow).RemoveDuplicates Columns:=1, Header:=xlYes ' 중복을 지워 읍면동 목록을 만든다
n = wsOut.Cells(wsOut.Rows.Count, "A").End(xlUp).Row ' 읍면동 목록의 마지막 행
wsOut.Range("B1:C1").Value = Array("건수 합계", "금액 합계") ' 결과 열 제목
wsOut.Range("B2:B" & n).Formula = "=SUMIF('" & srcName & "'!$A:$A,$A2,'" & srcName & "'!$C:$C)" ' 건수: 수식으로 남겨 검증 가능
wsOut.Range("C2:C" & n).Formula = "=SUMIF('" & srcName & "'!$A:$A,$A2,'" & srcName & "'!$D:$D)" ' 금액: 수식으로 남겨 검증 가능
wsOut.Cells(n + 1, "A").Value = "총계" ' 마지막 행에 총계
wsOut.Cells(n + 1, "B").Formula = "=SUM(B2:B" & n & ")"
wsOut.Cells(n + 1, "C").Formula = "=SUM(C2:C" & n & ")"
MsgBox "집계 완료: 읍면동 " & (n - 1) & "곳, 원본 " & (lastRow - 1) & "행", vbInformation ' 처리 결과 안내
End Sub
▣ 실행 중 나기 쉬운 오류 세 가지
- 런타임 오류 9 (아래 첨자 사용이 잘못되었습니다) — 시트 이름이 코드와 다른 것. 공백이나 오타를 확인합니다.
- 컴파일 오류 — 붙여넣기 중 줄이 잘렸거나, 따옴표가 둥근 따옴표(“ ”)로 바뀐 것. 코드 블록의 '복사' 단추로 다시 복사합니다.
- 저장 후 다시 열었는데 아무 일도 없음 — 노란 띠의 '콘텐츠 사용'을 안 누른 것. 파일 형식이 .xlsm인지도 봅니다.
실데이터로 옮길 때는 복사본에서, 시트 이름과 열 순서가 더미와 같은지, 필터가 걸려 있지 않은지 확인한 뒤 첫 실행은 결과만 봅니다. 월말마다 돌리는 반복은 예약이 아니라 사람이 F5를 누르는 수동 루프로 시작하고, 집계표가 나오면 2절의 머리글 프롬프트로 보고 문안을 받는 흐름이 업무망 안에서 완성됩니다.
9. 반출 전 점검표와 흔한 실패 세 가지
"구조만 보내면 다 되는 거죠?"라고 물으시면, 거의 그렇지만 구조에도 비공개 정보가 섞일 수 있다고 답합니다. 보내기 전에 아래 표로 한 번 거르고, 거른 뒤에도 2절의 보안담당관 확인은 생략하지 않습니다.

▣ 반출 전 점검표 — 구조에 섞이기 쉬운 것과 바꾸는 법
| 구조에 섞이기 쉬운 것 | 예 | 이렇게 한다 |
|---|---|---|
| 비공개 사업명·검토 중인 사업 | 아직 공고 전인 사업 이름이 든 열 | '사업A'처럼 일반 이름으로 보내고, 받은 뒤 사내에서 되돌린다 |
| 대상자 범주가 드러나는 열 이름 | 특정 급여 수급 여부, 질환명 | 열 이름을 '구분1'로 바꾸거나 그 열은 구조에서 뺀다 |
| 예산액·단가 등 숫자 자체가 비공개 | 단가표, 심사 점수 | 값은 더미로도 적지 않고 "해당 시트에서 읽어라"로만 |
| 담당자명·연락처·계좌 | 비고 열, 담당 열 | 구조에서 아예 뺀다 — 코드가 다룰 필요가 없는 열 |
| 서버 경로·시스템 이름 | 내부 공유폴더 경로 | 경로는 보내지 않고 "같은 통합 문서 안"으로 |

▣ 흔한 실패 세 가지
- "구조만"이라면서 열 이름 아래 실제 데이터를 복사해 넣는다 — 더미를 지어내기 귀찮아 "예시로 몇 줄만" 실제 행을 붙이는 순간 내부자료 반출입니다. 더미는 손으로 만들거나, AI에게 "이 열 구조로 더미 10행을 만들어 줘"라고 먼저 시키세요. 치환이 아니라 애초에 안 보내는 것이 원칙이에요.
- 코드 검토 없이 업무망 원본에서 실행한다 — 받은 즉시 실데이터 파일에서 F5를 누르면 틀린 코드가 원본을 덮어쓸 수 있습니다. 더미 1차 검증, 5가지 검토, 복사본, 2차 검증. 이 네 가지가 반입 검사예요.
- 머리글을 안 붙이고 "지난번처럼"이라고만 한다 — 공공 AI는 지난 대화를 기억하지 않을 수 있고, 기억하더라도 서식이 흔들립니다. 머리글은 새 대화마다 전체를 붙입니다. 수동 루프도 같아요. 서식 없이 "하던 대로" 쓰면 루프가 아니라 관행입니다.
▣ 시리즈 안내 (지자체 공무원 편, 총 6편)
| 편 | 주제 | 지자체 사례 |
|---|---|---|
| 1편 | 입문 — 세 용어, 차이, 버튼 지도, 망분리 적용법, 30분 실습 | 조례 1건으로 안내문 규칙 문서 |
| 2편 | 하네스 ① 규칙 문서·서식·검토 체크리스트 쓰는 법 | 민원 답변 초안 하네스 |
| 3편(오늘) | 하네스 ② 업무망에서 — 머리글 프롬프트, 수동 루프, 구조만 반출 | 월간 통계 집계 |
| 4편 | 루프 ① 예약 루프 걸기 | 조례 개정 공고·상급기관 보도자료 주간 요약 |
| 5편 | 루프 ② 완료 조건 루프, 정지 조건 5가지 | 계획서·결과보고서 초안 |
| 6편 | 헤르메스 에이전트 — 청사 안의 상주 AI, 보안성 검토 | 자체 sLLM 사례와 로드맵 |
다음 4편에서는 인터넷망 PC에서 첫 예약 루프를 겁니다. 기관 자료가 전혀 필요 없는 공개 자료 모니터링, 조례 개정 공고와 상급기관 보도자료 주간 요약을 챗GPT·제미나이·클로드의 예약 기능으로 매주 월요일 아침에 받는 법이에요.
10. 자주 묻는 질문 FAQ
Q1. 업무망의 공공 AI에도 하네스 엔지니어링을 적용할 수 있나요?
A1. 네. 하네스는 규칙 문서·서식·검토 체크리스트라는 설계라서 프로젝트 기능이 없어도 성립합니다. 규칙 문서를 '머리글 프롬프트' 파일로 저장해 요청할 때마다 채팅 맨 위에 붙여 넣고, 출처 없는 문장은 삭제하는 규칙과 자체 검증 항목을 넣으면 됩니다. 입력할 수 있는 자료의 범위는 기관의 이용 지침을 따릅니다.
Q2. 엑셀의 열 이름과 더미 데이터를 인터넷망 챗GPT에 보내도 되나요?
A2. 열 이름·서식·손으로 지어낸 더미값은 국정원 가이드라인이 말하는 "기관 민감데이터"에 해당하지 않을 가능성이 높아 취지에 어긋나지 않는 범위로 볼 수 있지만, 업무정보의 등급을 식별하고 판단하는 주체는 기관입니다. 보내기 전에 보안담당관 확인을 받고, 비공개 사업명이나 대상자 범주가 드러나는 열은 구조에서도 빼세요.
Q3. AI가 짠 VBA 매크로를 업무망 PC에서 실행해도 안전한가요?
A3. 검토와 검증을 거치면 안전하게 쓸 수 있습니다. 외부 통신 단어·원본 수정·자동 실행이 없는지 다섯 가지를 보고, 더미 10행으로 기대값과 같은지 반입 전후 두 번 확인한 뒤 복사본에서 실행하세요. 매크로 사용 가능 여부와 반입 경로는 정보화 부서와 기관의 망간 자료전송 절차를 따릅니다.
정리하면, 업무망에서 막히는 것은 데이터가 밖으로 나가는 것이지 설계가 아니라서, 공공 AI에는 규칙 문서를 머리글로 매번 붙이고, AI가 없으면 같은 서식으로 사람이 수동 루프를 돌리며, 계산이 필요한 일은 구조만 반출해 코드를 받아 검증 후 반입하면 됩니다. 셋 다 같은 규칙 문서에서 나오고, 셋 다 "실수 하나, 규칙 한 줄"로 자랍니다. 어려운 쪽은 기술이 아니라, 실제 행을 붙이고 싶은 손을 멈추고 더미 10행을 지어내는 5분이에요.
구조는 밖으로, 데이터는 청사 안에, 판단은 보안담당관에게. 하네스는 버튼이 아니라 설계라서, 업무망에서도 성립합니다.
지금 바로 8절의 더미 10행을 입력하고, 5절의 프롬프트로 VBA를 받아 Alt+F11로 실행해 보세요. 월간집계 시트가 기대값 표와 같아지는 순간, 업무망 안에서도 자동화가 된다는 것을 손으로 알게 됩니다.
망분리 업무망에서 하네스 엔지니어링 | 공공 AI 머리글 프롬프트·수동 루프·구조만 반출, 강성희 강사 (시리즈 3편)
📎 관련 정보 및 공식 채널
- 국가정보원 「챗GPT 등 생성형 AI 활용 보안 가이드라인」 원문 (2023.6, PDF) — 업무망·인터넷망별 사용 원칙과 입력 금지 사항 원문
- 범정부 AI 공통기반 서비스 시작 (정책브리핑, 2025-11-24) — 행정 내부망에서 중앙·지방정부가 쓰는 AI 챗서비스 2종(시범 운영 후 확대 계획)
- 국가 사이버보안 기본지침 개정 시행 (아이티데일리) — 망분리 조항 삭제, 업무정보 등급 식별·AI 시스템 보안 조항 신설
- Microsoft 365 파일에서 매크로 사용 또는 사용하지 않도록 설정 (마이크로소프트 지원) — 매크로 설정 메뉴 경로와 인터넷 파일 매크로 차단 안내
- Harness engineering: leveraging Codex in an agent-first world (OpenAI, 2026-02-11) — 규칙 문서와 기계적 검증으로 같은 실수를 반복하지 않게 하는 하네스 엔지니어링 원문
실질적인 업무 변화를 이끌어내는 전문가의 AI 교육이 필요하시다면 아래 오픈카톡방 또는 네이버톡톡으로 문의하시면 됩니다.
챗GPT강사 강성희님의 오픈프로필 — 챗gpt/ 생성형 AI/ 프롬프트 엔지니어링 강사
생성형 AI 강사 강성희 — 재직자, 공무원 AI 교육 관련 글모음
- 바이브코딩 AI강사 양성과정 수료식 | 강성희 강사, 미니강의 후기, 한국AI디지털교육협회
- 공무원 AI 교육 후기 | 강성희 강사, 농식품인재개발원 7기 VBA·제미나이 노트북으로 업무자동화
- 제조업 재직자 AI, 엑셀 VBA 업무 자동화 교육 후기 | 강성희 강사, 한남대, 데이터 분석
- 재직자를 위한 칼퇴를 부르는 클로드 기본 활용법, 일잘러 AI 강사 강성희가 알려주는 claude 실무 노하우
- 제조업 재직자 필독! 엑셀, PPT에서 클로드로 데이터 분석부터 8D 보고서까지, 일잘러 AI 강사 강성희의 Claude 실무 활용법
- 재직자 대상 클로드 코워크로 엑셀 파일을 PPT 보고서로, 일잘러 AI 강사 강성희의 Claude Cowork 실무 활용법
- 재직자 대상 클로드 Claude 엑셀 활용 제조업 데이터 분석, 일잘러 AI 강사 강성희의 실무 노하우
- 재직자를 위한 클로드 Claude 엑셀 활용 데이터 분석, 일잘러 AI 강사 강성희의 실무 노하우
- SK이노베이션 E&S 전북에너지서비스 재직자 AI 실무 역량강화 32시간 교육 후기, AI강사 강성희의 프롬프트 엔지니어링부터 바이브코딩
- 한국산업단지공단 임직원 대상 구글 노트북LM, 바이브코딩 실무교육, 재직자 AI 강사 강성희 특강 후기
- [챗지피티강사 강성희] 재직자를 위한 제미나이 Gemini 3 바이브코딩 노코드 앱 제작, 크레신
