AI 해결 노트 · 2026-09-18 · 실측 2026-09-18
한글 표에 줄 추가하기 — 마지막 칸 Tab, 중간 줄, 병합 셀이 걸친 줄
한 줄로
한글 2022에서 표 마지막 칸에 커서를 두고 Tab을 누르면 줄이 하나 늘어납니다. 가운데 칸에서 누르면 옆 칸으로 갈 뿐입니다. 중간에 끼워 넣을 때는 [표 레이아웃] 탭의 [줄·칸 추가하기]를 씁니다. 세로로 병합된 칸이 있는 표에서는 커서를 어디에 두느냐에 따라 결과가 갈립니다. 병합된 칸 안에 두면 병합 아래에 새 줄이 생기고, 병합 옆 칸에 두면 병합된 칸이 한 줄을 더 잡아먹습니다.
이런 분께
표를 다 채우고 나서 줄이 모자란 걸 알았거나, 병합해 둔 표에 줄을 넣었다가 표가 이상하게 어긋난 적이 있는 분입니다.
실측 환경
| 항목 | 값 |
|---|---|
| OS | Windows 11 Home (10.0.26200) |
| 한글 | 한글 Office 2022, 버전 문자열 12, 0, 0, 4605 |
| 시험 표 | 일반 표 3줄 3칸 · 4줄 3칸, 병합 표 4줄 3칸(1칸의 2~3줄 세로 병합) |
| 줄 수를 센 방법 | 한글에서 .hwpx로 저장한 뒤 Contents/section0.xml의 hp:tr 수를 세고, hp:cellSpan의 colSpan/rowSpan으로 병합 상태를 읽음 |
| 테두리 확인 | 같은 문서를 PDF로 저장해 PyMuPDF 1.28.0 (MuPDF 1.29.0)으로 렌더하고, 쪽 안의 가로·세로 선 개수를 셈 |
칸 안 글자는 A1-1, B2-3처럼 줄·칸 번호를 그대로 적어 두었습니다. 줄이 어디로 밀렸는지 눈으로 좇으려고 그렇게 했습니다.
Tab 키는 한글 창을 띄우고 실제로 눌렀습니다. [줄·칸 추가하기]로 줄을 끼워 넣는 쪽은 창을 열어 모양을 확인한 뒤, 같은 동작을 자동화(한글 COM의 TableInsertLowerRow·TableInsertUpperRow)로 걸어 결과를 셌습니다.
어디에 있는 단추인가
표 안에 커서를 두면 리본 오른쪽 끝에 탭 아이콘 두 개가 더 생깁니다. 뒤쪽이 [표 레이아웃]입니다.

[줄·칸 추가하기]를 누르면 "줄/칸 추가하기" 창이 뜹니다.

방향 아이콘 넷(위 · 아래 · 왼쪽 · 오른쪽) 중 하나를 고르고 [줄/칸 수]에 몇 줄을 넣을지 적습니다. 기본값은 1입니다. 셀 블록을 잡지 않은 채 커서만 놓으면 [셀 합치기]는 흐리게 보여 눌리지 않습니다.
① 마지막 칸에서 Tab
3줄 3칸 표를 다 채우고 마지막 칸(3줄 3칸)에 커서를 둔 채 Tab 키를 실제로 눌렀습니다.
[t1_before] 줄 수=3 전체 칸 수=9
3행: A3-1(c0,가로1,세로1) | A3-2(c1,가로1,세로1) | A3-3(c2,가로1,세로1)
Tab 키 1회 전송
[t1_after] 줄 수=4 전체 칸 수=12
4행: ★Tab뒤(c0,가로1,세로1) | 빈칸(c1,가로1,세로1) | 빈칸(c2,가로1,세로1)줄이 3에서 4로 늘었고, 커서는 새 줄의 첫 칸으로 갔습니다. Tab 뒤에 바로 타이핑한 ★Tab뒤가 4줄 1칸에 들어간 것으로 확인됩니다. 칸 수는 9에서 12로, 딱 한 줄치만 늘었습니다.

테두리는 PDF 안의 선을 세어 봤습니다. Tab 앞은 가로선 6개·세로선 6개, Tab 뒤는 가로선 7개·세로선 6개입니다. 줄이 하나 늘면서 세어진 가로선이 하나 늘었고 세로선은 그대로입니다. 선 하나하나의 굵기나 길이까지 견주지는 않았습니다.
같은 표의 가운데 칸(2줄 2칸)에서 Tab을 누르면 아무것도 늘지 않습니다.
[t2_mid] 줄 수=3 전체 칸 수=9
2행: A2-1(c0,…) | A2-2(c1,…) | ★A2-3(c2,…)커서가 오른쪽 칸으로 옮겨 갔을 뿐이라 ★이 A2-3 앞에 붙었습니다. 저희가 눌러 본 두 자리(마지막 칸, 2줄 2칸) 중에서 줄이 늘어난 건 마지막 칸뿐입니다.
② 중간에 줄 끼워 넣기
4줄 3칸 표에서 커서를 2줄에 두고 아래에 줄 하나를 넣었습니다(자동화로는 TableInsertLowerRow).
[k2_lower] 줄 수=5 전체 칸 수=15
1행: A1-1 | A1-2 | A1-3
2행: A2-1 | A2-2 | A2-3
3행: 빈칸 | 빈칸 | 빈칸
4행: A3-1 | A3-2 | A3-3
5행: A4-1 | A4-2 | A4-3빈 줄이 2줄과 3줄 사이에 들어갔고, 원래 3·4줄은 4·5줄로 밀렸습니다. 선도 가로 8개·세로 6개로, 4줄일 때보다 가로선이 하나 늘었습니다. 위 방향을 고르면(TableInsertUpperRow) 새 줄이 2줄 자리에 들어가고 원래 2줄이 3줄로 밀립니다.
[mid_upper] 줄 수=5
1행: A1-1 | A1-2 | A1-3
2행: 빈칸 | 빈칸 | 빈칸
3행: A2-1 | A2-2 | A2-3③ 병합된 칸이 있는 표
1칸의 2~3줄을 세로로 합친 표를 만들었습니다. .hwpx에서 읽으면 이렇게 보입니다.
[t3_before] 줄 수=4 전체 칸 수=11
1행: B1-1(c0,가로1,세로1) | B1-2(c1,…) | B1-3(c2,…)
2행: B2-1B3-1(c0,가로1,세로2) | B2-2(c1,…) | B2-3(c2,…)
3행: B3-2(c1,…) | B3-3(c2,…)
4행: B4-1(c0,…) | B4-2(c1,…) | B4-3(c2,…)2줄의 첫 칸이 세로2가 되고, 3줄에는 첫 칸이 아예 없습니다. 전체 칸 수가 12에서 11로 줄어든 게 그 뜻입니다.
③-a 병합 표의 마지막 칸에서 Tab
[t3_after] 줄 수=5 전체 칸 수=14
2행: B2-1B3-1(c0,가로1,세로2) | B2-2 | B2-3
3행: B3-2 | B3-3
5행: ★Tab뒤(c0,…) | 빈칸 | 빈칸줄이 4에서 5로 늘고, 2줄의 세로2 병합은 건드려지지 않았습니다. 새로 생긴 줄은 병합 없는 세 칸짜리입니다. 이번에 쓴 세로 병합(첫 칸 2~3줄)에 한해서는, 표 끝에 줄을 붙이는 데 병합이 걸림돌이 되지 않았습니다.
③-b 병합된 칸 안에 커서를 두고 아래에 줄 추가
[k3a_insert_in_merge] 줄 수=5 전체 칸 수=14
2행: B2-1B3-1(c0,가로1,세로2) | B2-2 | B2-3
3행: B3-2 | B3-3
4행: 빈칸 | 빈칸 | 빈칸
5행: B4-1 | B4-2 | B4-3새 줄이 병합 덩어리 바로 아래(4줄 자리)에 들어갔습니다. 병합은 세로2 그대로고 새 줄은 세 칸 다 있습니다. 대개 이게 원하던 결과입니다.
③-c 병합 옆 칸에 커서를 두고 아래에 줄 추가
같은 구조의 병합 표를 새로 만들고, 이번에는 커서를 2줄 2칸(병합된 칸의 옆)에 두고 똑같이 아래에 줄을 넣었습니다.
[k3c_insert_beside_merge] 줄 수=5 전체 칸 수=13
2행: B2-1B3-1(c0,가로1,세로3) | B2-2 | B2-3
3행: 빈칸(c1) | 빈칸(c2)
4행: B3-2 | B3-3
5행: B4-1 | B4-2 | B4-3병합이 세로2에서 세로3으로 늘었습니다. 새 줄에는 칸이 둘뿐이고, 왼쪽은 병합된 칸이 이어서 덮습니다. 전체 칸 수도 14가 아닌 13입니다. 표를 세로로 자른 왼쪽 열은 줄이 안 늘고 오른쪽 두 열만 늘어난 모양이 됩니다.

구조 로그에서 왼쪽 병합 칸의 rowSpan이 2에서 3으로 늘었고, 그림 오른쪽에서도 그 칸이 새 줄까지 내려와 있습니다. 선 개수는 병합 표 원본이 가로 7·세로 6, 두 삽입 결과가 모두 가로 8·세로 6이었습니다. 두 경우 다 세어진 가로선이 하나 늘고 세로선은 같았습니다.
결과
| 무엇을 했나 | 줄 수 | 칸 수 | 병합 | PDF 선 개수(가로/세로) | 새 줄이 생긴 자리 |
|---|---|---|---|---|---|
| 일반 표, 마지막 칸에서 Tab | 3 → 4 | 9 → 12 | 해당 없음 | 6/6 → 7/6 | 맨 아래 |
| 일반 표, 가운데 칸에서 Tab | 3 → 3 | 9 → 9 | 해당 없음 | 재지 않음 | 안 생김(커서만 이동) |
| 일반 표, 2줄에서 아래에 줄 추가 | 4 → 5 | 12 → 15 | 해당 없음 | 8/6 | 2줄과 3줄 사이 |
| 일반 표, 2줄에서 위에 줄 추가 | 4 → 5 | 12 → 15 | 해당 없음 | 재지 않음 | 1줄과 2줄 사이 |
| 병합 표, 마지막 칸에서 Tab | 4 → 5 | 11 → 14 | 세로2 유지 | 7/6 → 재지 않음 | 맨 아래 |
| 병합 표, 병합된 칸 안에서 아래에 줄 추가 | 4 → 5 | 11 → 14 | 세로2 유지 | 7/6 → 8/6 | 병합 덩어리 바로 아래 |
| 병합 표, 병합 옆 칸에서 아래에 줄 추가 | 4 → 5 | 11 → 13 | 세로2 → 세로3 | 7/6 → 8/6 | 병합 안쪽(칸 두 개짜리 줄) |
가운데 칸에서 Tab을 누른 경우만 줄 수가 그대로고, 나머지 여섯은 한 줄씩 늘었습니다. 갈리는 곳은 칸 수입니다. 병합 표 세 시험 중 마지막 칸 Tab과 병합 칸 안에서의 줄 추가는 14칸이 됐고, 병합 옆 칸에서의 줄 추가만 13칸이 됐습니다. 표를 고치고 나서 모양이 이상하면 줄 수와 함께 칸 수도 세 보시면 이 경우를 가려낼 수 있습니다.
여러 문서를 한꺼번에 고쳐야 할 때
같은 일을 자동화로 돌리려면 한글 COM의 액션 이름을 씁니다. 여기서 한 번 걸렸습니다. Tab 키와 이름이 비슷한 TableRightCell은 마지막 칸에서 False를 돌려주고 줄을 늘리지 않습니다. 줄까지 늘리는 건 TableRightCellAppend입니다.
4줄 3칸 표에서:
Run(TableRightCell ) -> False ← 줄 수 그대로 4, 글자만 마지막 칸에 붙음
3줄 3칸 표에서:
Run(TableRightCellAppend ) -> True ← 줄 수 4, 커서는 새 줄 첫 칸
Run(TableAppendRow ) -> True ← 줄 수 4, 커서는 새 줄 맨 오른쪽 칸
Run(TableInsertRow ) -> False ← 줄 수 그대로 3, 아무것도 안 일어남줄을 끼워 넣는 건 TableInsertLowerRow와 TableInsertUpperRow입니다. 손으로 할 수 있는 일이면 리본 단추로 하는 편이 낫습니다. 이 목록은 문서가 수십 개일 때를 위한 것입니다.
실패한 것
- 처음에는 한 프로세스 안에서 문서 여러 개를 차례로 만들며 Tab 키를 보냈습니다. Tab 시험 세 건이 모두 표도 글자도 없는 빈 파일로 저장됐습니다(
tbl count = 0, 글자''). Tab 앞에서 저장한 파일은 멀쩡했으니(tbl count = 1) Tab 전송 언저리에서 어긋난 것으로 봅니다. 그때 로그에 찍힌 대상 창 이름은 세 번 다빈 문서 1 - 한글이었습니다. 시험 한 번에 문서 하나만 쓰도록 나누고 창 손잡이를XHwpWindows.Active_XHwpWindow.WindowHandle로 받아 다시 돌렸더니, 키를 보내기 직전 활성 창과 앞에 나온 창이 같은 손잡이로 찍혔고 결과도 제대로 나왔습니다. 위에 실은 값은 다시 돌린 쪽입니다. - 셀을 합치려고
TableCellBlock다음에 바로TableLowerCell을 넣었더니 블록이 안 늘고TableMergeCell이False로 끝났습니다. 사이에TableCellBlockExtend를 넣어야 합쳐졌습니다. TableCellBlockExtendAbs는False를 돌려줬습니다. 무엇을 하는 이름인지 알아보지 않았습니다.
확인하지 않은 것
- 가로 병합(한 줄을 통째로 합친 경우)에 줄을 넣으면 어떻게 되는지는 이 글에서 다루지 않았습니다. 가로 병합을 만드는 것까지만 확인했습니다.
- 줄을 한 번에 여러 개(줄/칸 수 2 이상) 넣었을 때는 돌려 보지 않았습니다.
- 표가 쪽 경계에 걸쳐 있을 때 줄을 넣으면 어떻게 나뉘는지는 보지 않았습니다.
- 칸을 지우는 쪽(줄 지우기)은 한 번도 눌러 보지 않았습니다.
- 한글 2022 말고 다른 판에서는 단추 이름과 동작을 확인하지 않았습니다.
- 셀 배경색이나 테두리 굵기를 따로 준 표에서도 새 줄이 같은 서식을 받는지는 확인하지 않았습니다. 이 글에서는 표를 만든 뒤 서식을 손대지 않았고, 확인한 것은 선의 개수뿐입니다. 굵기·색은 재지 않았습니다.