
๐ Excel VBA๋ก ์์ด ์ง๋ฌธ/ํด์ ์๋ ๋ฌธ์ ์๋ ์์ฑ (์์ธ ํํ ๋ฆฌ์ผ)

1๋จ๊ณ: ์์ ํ์ผ ์ค๋นํ๊ธฐ
๊ฐ์ฅ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ๋งคํฌ๋ก๋ฅผ ์คํํ ์์ ํ์ผ์ ์ค๋นํด์ผ ํฉ๋๋ค.
๋งคํฌ๋ก ํตํฉ ๋ฌธ์๋ก ์ ์ฅ (โญ๊ฐ์ฅ ์ค์!)
์ ์์ ํ์ผ์ ์ด๊ณ , ์ฆ์ [ํ์ผ] > [๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ ์ฅ]์ ํด๋ฆญํฉ๋๋ค.
ํ์ผ ํ์์
Excel ๋งคํฌ๋ก ์ฌ์ฉ ํตํฉ ๋ฌธ์ (*.xlsm)*๋ก ์ ํํ๊ณ , ํ์ผ ์ด๋ฆ์์์ด ์ง๋ฌธ ์์ฑ๊ธฐ.xlsm๋ก ์ง์ ํ์ฌ ์ ์ฅํฉ๋๋ค.์ด์ : ์ผ๋ฐ ์์ ํ์ผ(
.xlsx)์ ๋ณด์์์ ์ด์ ๋ก ๋งคํฌ๋ก(VBA ์ฝ๋)๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ฐ๋์.xlsmํ์ฅ์๋ก ์ ์ฅํด์ผ ์ฝ๋๊ฐ ์ฌ๋ผ์ง์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ๋ ฅ
์์ ์ํธ์ ์ฒซ ๋ฒ์งธ ํ(A1, B1, C1)์ ๊ฐ๊ฐ
์ ๋ชฉ,์ง๋ฌธ,ํด์์ด๋ผ๊ณ ์ ๋ ฅํฉ๋๋ค.A2 ์ ๋ถํฐ ์๋๋ก ์ ๊ณตํด์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ก๋๋ก ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ต๋๋ค. (์๋ 2๊ฐ ๋ฌธํญ ์์)
| A | B | C | |
|---|---|---|---|
| 1 | ์ ๋ชฉ | ์ง๋ฌธ | ํด์ |
| 2 | 18๋ฒ | ACC Travel Agency Customers: Have you... | ACC ์ฌํ์ฌ ๊ณ ๊ฐ๋๊ป: ์์ฐ ์์์... |
| 3 | 19๋ฒ | When I woke up in our hotel room, it... | ๋ด๊ฐ ํธํ ๋ฐฉ์์ ๊นจ์ด๋ฌ์ ๋๋... |
| ... | ... | ... | ... |
๋งคํฌ๋ก ์คํ ๋ฒํผ ๋ง๋ค๊ธฐ
์๋จ ๋ฉ๋ด์์ [๊ฐ๋ฐ ๋๊ตฌ] ํญ์ ํด๋ฆญํฉ๋๋ค.
๋ง์ฝ [๊ฐ๋ฐ ๋๊ตฌ] ํญ์ด ์๋ค๋ฉด?
ํ์ผ > ์ต์ > ๋ฆฌ๋ณธ ์ฌ์ฉ์ ์ง์ ๋ฉ๋ด๋ก ์ด๋ํ์ฌ ์ค๋ฅธ์ชฝ ๋ชฉ๋ก์๊ฐ๋ฐ ๋๊ตฌ์ ์ฒดํฌํ๊ณ ํ์ธ์ ๋๋ฅด์ธ์.
[๊ฐ๋ฐ ๋๊ตฌ] ํญ์์ [์ฝ์ ]์ ํด๋ฆญํ๊ณ , ์์ ์ปจํธ๋กค์ ์๋ ๋จ์ถ(๋ฒํผ) ๋ชจ์ ์์ด์ฝ์ ์ ํํฉ๋๋ค.
์ํธ์ ๋น์ด์๋ ๊ณต๊ฐ์ ๋ง์ฐ์ค๋ก ๋๋๊ทธํ์ฌ ์ ๋นํ ํฌ๊ธฐ์ ๋ฒํผ์ ๋ง๋ญ๋๋ค.
๋งคํฌ๋ก ์ง์ ์ฐฝ์ด ๋ํ๋๋ฉด ์ผ๋จ [์ทจ์]๋ฅผ ๋๋ฆ ๋๋ค.์์ฑ๋ ๋ฒํผ ์์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๊ณ
ํ ์คํธ ํธ์ง์ ๋๋ฌ "์๋ ๋ฌธ์ ์์ฑ" ์ด๋ผ๊ณ ์ด๋ฆ์ ๋ฐ๊ฟ์ค๋๋ค.
(์ฃผ์) ๋ฐ์ดํฐ๊ฐ ์๋ ์์ด ์ง๋ฌธ ์์ฑ๊ธฐ.xlsm ํ์ผ์์
์๋ ์์ ์ ํ์ ์ผ ํฉ๋๋ค.


2๋จ๊ณ: VBA ํธ์ง๊ธฐ ์ด๊ณ ์ฝ๋ ์์ฑํ๊ธฐ
์ด์ ์ค์ ๋ก ์๋ ๋ฌธ์๋ฅผ ๋ง๋๋ ๋ง๋ฒ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ ์ฐจ๋ก์ ๋๋ค.
VBA ํธ์ง๊ธฐ ์ด๊ธฐ
ํค๋ณด๋์์
Alt + F11ํค๋ฅผ ๋์์ ๋๋ฌ VBA ํธ์ง๊ธฐ(VBE) ์ฐฝ์ ์ฝ๋๋ค.
๋ชจ๋(Module) ์ถ๊ฐํ๊ธฐ
VBA ํธ์ง๊ธฐ์ ๋ฉ๋ด์์ [์ฝ์ ] > [๋ชจ๋]์ ํด๋ฆญํฉ๋๋ค. ์ค๋ฅธ์ชฝ์ ํ์์์ ๋น ์ฝ๋ ํธ์ง ์ฐฝ์ด ๋ํ๋ฉ๋๋ค. ์์ผ๋ก ๋ชจ๋ ์ฝ๋๋ ์ด ๊ณณ์ ์์ฑํฉ๋๋ค.

Word ๊ธฐ๋ฅ ์ฌ์ฉ ๊ถํ ์ป๊ธฐ (โญ์ฐธ์กฐ ์ค์ )
์ด ๋จ๊ณ๋ ์์ ์ด ์๋๋ฅผ ์ ์ดํ๊ธฐ ์ํด ๋ฐ๋์ ํ์ํฉ๋๋ค.
๋ฉ๋ด์์ [๋๊ตฌ] > [์ฐธ์กฐ]๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋ก์ด ์ฐฝ์ด ๋จ๋ฉด ์คํฌ๋กค์ ๋ด๋ ค
Microsoft Word XX.X Object Libraryํญ๋ชฉ์ ์ฐพ์ ์ฒดํฌํ๊ณ [ํ์ธ]์ ๋๋ฆ ๋๋ค. (XX.X๋ ์ค์น๋ ์คํผ์ค ๋ฒ์ ์ ๋ฐ๋ผ 16.0, 15.0 ๋ฑ์ผ๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค.)
VBA ์ฝ๋ ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ
์๋์ ์ ์ฒด ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ฐฉ๊ธ ์ ์ด์๋ ํ์ ๋ชจ๋ ์ฐฝ์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ต๋๋ค. ์ฝ๋ ๊ฐ ์ค์ ์ญํ ์ ์ฃผ์(
')์ ์์ธํ ์ค๋ช ๋์ด ์์ต๋๋ค.
' Sub ํ๋ก์์ ์์: "CreateEnglishDocs" ๋ผ๋ ์ด๋ฆ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค.
Sub CreateEnglishDocs()
' === 1. ๋ณ์ ์ ์ธ: ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ ์ ์ฅ ๊ณต๊ฐ(๋ณ์)๋ค์ ๋ง๋ญ๋๋ค. ===
Dim wdApp As Word.Application ' ์๋ ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ๋ด์ ๋ณ์
Dim wdDoc As Word.Document ' ์์ฑ๋ ์๋ ๋ฌธ์๋ฅผ ๋ด์ ๋ณ์
Dim ws As Worksheet ' ํ์ฌ ์์
์ํธ๋ฅผ ๋ด์ ๋ณ์
Dim lastRow As Long ' ๋ฐ์ดํฐ๊ฐ ์๋ ๋ง์ง๋ง ํ์ ๋ฒํธ๋ฅผ ์ ์ฅํ ๋ณ์
Dim i As Long ' ๋ฐ๋ณต๋ฌธ์ ์ํ ์นด์ดํฐ ๋ณ์
Dim savePath As String ' ์๋ ํ์ผ์ด ์ ์ฅ๋ ํด๋ ๊ฒฝ๋ก
Dim docTitle As String ' ๋ฌธ์ ์ ๋ชฉ (์: "18๋ฒ")
Dim docPassage As String ' ์์ด ์ง๋ฌธ ๋ด์ฉ
Dim docTranslation As String ' ํ๊ธ ํด์ ๋ด์ฉ
' === 2. ์ด๊ธฐ ์ค์ : ๋งคํฌ๋ก ์คํ์ ์ํ ๊ธฐ๋ณธ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค. ===
' ์ด VBA ์ฝ๋๊ฐ ๋ค์ด์๋ ์์
ํ์ผ์ "Sheet1" ์ํธ๋ฅผ ๋ณ์ ws์ ํ ๋นํฉ๋๋ค.
' ๋ง์ฝ ์ํธ ์ด๋ฆ์ด ๋ค๋ฅด๋ค๋ฉด "Sheet1" ๋ถ๋ถ์ ์ค์ ์ํธ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ฃผ์ธ์.
Set ws = ThisWorkbook.Sheets("Sheet1")
' A์ด์ ๊ธฐ์ค์ผ๋ก, ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋ ๋ง์ง๋ง ํ ๋ฒํธ๋ฅผ ์ฐพ์์ lastRow ๋ณ์์ ์ ์ฅํฉ๋๋ค.
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' ์๋ ํ์ผ์ ์ ์ฅํ ๊ฒฝ๋ก๋ฅผ ํ์ฌ ์์
ํ์ผ์ด ์๋ ํด๋๋ก ์ง์ ํฉ๋๋ค.
savePath = ThisWorkbook.Path & ""
' ํ๋ฉด ์
๋ฐ์ดํธ๋ฅผ ์ ์ ๋ฉ์ถฐ์ ๋งคํฌ๋ก ์คํ ์๋๋ฅผ ๋์
๋๋ค.
Application.ScreenUpdating = False
' === 3. ํต์ฌ ๋ก์ง: ์์
๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์๋ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ===
' 2๋ฒ์งธ ํ(์ค์ ๋ฐ์ดํฐ ์์)๋ถํฐ ๋ง์ง๋ง ํ๊น์ง ํ ํ์ฉ ๋ฐ๋ณต ์คํํฉ๋๋ค.
For i = 2 To lastRow
' -- ์์
์์ ๋ฐ์ดํฐ ์ฝ์ด์ค๊ธฐ --
docTitle = ws.Cells(i, "A").Value ' iํ A์ด (์ ๋ชฉ) ๊ฐ์ ๋ณ์์ ์ ์ฅ
docPassage = ws.Cells(i, "B").Value ' iํ B์ด (์ง๋ฌธ) ๊ฐ์ ๋ณ์์ ์ ์ฅ
docTranslation = ws.Cells(i, "C").Value ' iํ C์ด (ํด์) ๊ฐ์ ๋ณ์์ ์ ์ฅ
' -- ์๋ ํ๋ก๊ทธ๋จ ์คํ ๋ฐ ์ ๋ฌธ์ ์์ฑ --
Set wdApp = New Word.Application ' ์๋ก์ด ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ
Set wdDoc = wdApp.Documents.Add ' ์๋ ํ๋ก๊ทธ๋จ์ ์ ๋ฌธ์๋ฅผ ์ถ๊ฐ
' -- ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์๋ ๋ฌธ์์ ์ฐ๊ณ ์์ ๊พธ๋ฏธ๊ธฐ --
With wdDoc.Content
' 1. ์ ์ฒด ๊ธ๊ผด๊ณผ ํฌ๊ธฐ ๊ธฐ๋ณธ ์ค์
.Font.Name = "๋ง์ ๊ณ ๋"
.Font.Size = 11
' 2. ์ ๋ชฉ ์ถ๊ฐ ๋ฐ ์์ ๋ณ๊ฒฝ
.InsertAfter "[" & docTitle & "] ์์ด ์ง๋ฌธ ๋ถ์" & vbCrLf & vbCrLf
.Paragraphs.Last.Range.Font.Bold = True ' ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๋ฌธ๋จ(์ ๋ชฉ)์ ๊ตต๊ฒ
.Paragraphs.Last.Range.Font.Size = 16 ' ์ ๋ชฉ ๊ธ์ ํฌ๊ธฐ ํค์ฐ๊ธฐ
.Paragraphs.Last.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '๊ฐ์ด๋ฐ ์ ๋ ฌ
' 3. ์๋ฌธ(์ง๋ฌธ) ์ถ๊ฐ ๋ฐ ์์ ๋ณ๊ฒฝ
.InsertAfter "โ ์๋ฌธ (English)" & vbCrLf
.Paragraphs.Last.Range.Font.Bold = True
.Paragraphs.Last.Range.Font.Size = 13
.InsertAfter docPassage & vbCrLf & vbCrLf ' ์ง๋ฌธ ๋ด์ฉ ์ถ๊ฐํ๊ณ ๋ ์ค ๋์ฐ๊ธฐ
' 4. ํด์ ์ถ๊ฐ ๋ฐ ์์ ๋ณ๊ฒฝ
.InsertAfter "โ ํด์ (Korean)" & vbCrLf
.Paragraphs.Last.Range.Font.Bold = True
.Paragraphs.Last.Range.Font.Size = 13
.InsertAfter docTranslation & vbCrLf ' ํด์ ๋ด์ฉ ์ถ๊ฐ
End With
' -- ์์
ํ ์๋ ๋ฌธ์ ์ ์ฅ ๋ฐ ๋ซ๊ธฐ --
' ํ์ผ ์ด๋ฆ ํ์: ์์ด ์ง๋ฌธ_18๋ฒ.docx
wdDoc.SaveAs2 FileName:=savePath & "์์ด ์ง๋ฌธ_" & docTitle & ".docx"
wdDoc.Close ' ๋ฌธ์๋ฅผ ๋ซ์ (์ ์ฅ ์ฌ๋ถ ๋ฌป์ง ์์)
' -- ์๋ ํ๋ก๊ทธ๋จ ์ข
๋ฃ --
wdApp.Quit
' -- ๋ค์ ๋ฐ๋ณต์ ์ํด ๋ณ์ ์ ๋ฆฌ (๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ) --
Set wdDoc = Nothing
Set wdApp = Nothing
Next i ' ๋ค์ ํ์ผ๋ก ์ด๋ํ์ฌ For๋ฌธ ๋ฐ๋ณต
' === 4. ๋ง๋ฌด๋ฆฌ: ๋ชจ๋ ์์
์๋ฃ ํ ์ฌ์ฉ์์๊ฒ ์๋ฆผ ===
' ๋ฉ์ท๋ ํ๋ฉด ์
๋ฐ์ดํธ๋ฅผ ๋ค์ ์ผญ๋๋ค.
Application.ScreenUpdating = True
' ์์
์ด ์๋ฃ๋์์์ ๋ฉ์์ง ์์๋ก ์๋ ค์ค๋๋ค.
MsgBox "์ด " & (lastRow - 1) & "๊ฐ์ ์์ด ์ง๋ฌธ ํ์ผ ์์ฑ์ด ์๋ฃ๋์์ต๋๋ค.", vbInformation, "์์
์๋ฃ"
End Sub3๋จ๊ณ: ๋ฒํผ์ ๋งคํฌ๋ก ์ฐ๊ฒฐ ๋ฐ ์คํ
VBA ํธ์ง๊ธฐ ์ฐฝ์ ๋ซ๊ณ ๋ค์ ์์ ํ๋ฉด์ผ๋ก ๋์์ต๋๋ค.
๋ง๋ค์ด ๋์๋ [์๋ ๋ฌธ์ ์์ฑ] ๋ฒํผ ์์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๋ํ๋๋ ๋ฉ๋ด์์ [๋งคํฌ๋ก ์ง์ ]์ ์ ํํฉ๋๋ค.

๋งคํฌ๋ก ๋ชฉ๋ก์์ ๋ฐฉ๊ธ ๋ง๋
CreateEnglishDocs๋ฅผ ํด๋ฆญํ๊ณ [ํ์ธ]์ ๋๋ฆ ๋๋ค.

์ด์ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. [์๋ ๋ฌธ์ ์์ฑ] ๋ฒํผ์ ํด๋ฆญํด๋ณด์ธ์!

4๋จ๊ณ: ๊ฒฐ๊ณผ ํ์ธํ๊ธฐ
๋ฒํผ์ ๋๋ฅด๋ฉด ์์ ๋ฐ์ดํฐ์ ์๋งํผ ์์ ์ด ๋ฐ๋ณต๋ ํ, "์์ ์๋ฃ" ๋ฉ์์ง ๋ฐ์ค๊ฐ ๋ํ๋ฉ๋๋ค.
์ด์ ์ฌ๋ฌ๋ถ์ ์์
ํ์ผ(์์ด ์ง๋ฌธ ์์ฑ๊ธฐ.xlsm)์ด ์ ์ฅ๋ ํด๋๋ฅผ ํ์ธํด ๋ณด์ธ์. ์์ด ์ง๋ฌธ_18๋ฒ.docx, ์์ด ์ง๋ฌธ_19๋ฒ.docx... ์ ๊ฐ์ด ๊ฐ ์ง๋ฌธ๋ณ๋ก ์๋ฒฝํ๊ฒ ์์์ด ์ ์ฉ๋ ์๋ ๋ฌธ์๋ค์ด ์์ฑ๋ ๊ฒ์ ๋ณด์ค ์ ์์ต๋๋ค!

[์์ฑ๋ ์๋ ํ์ผ ์์: ์์ด ์ง๋ฌธ_18๋ฒ.docx]
[18๋ฒ] ์์ด ์ง๋ฌธ ๋ถ์
โ ์๋ฌธ (English)
ACC Travel Agency Customers: Have you ever wanted to enjoy a holiday in nature? This summer is the best time to turn your dream into reality. We have a perfect travel package for you...
โ ํด์ (Korean)
ACC ์ฌํ์ฌ ๊ณ ๊ฐ๋๊ป: ์์ฐ ์์์ ํด๊ฐ๋ฅผ ์ฆ๊ธฐ๋ ๊ฒ์ ์ํ ์ ์ด ์์ต๋๊น? ์ด๋ฒ ์ฌ๋ฆ์ด ๋น์ ์ ๊ฟ์ ํ์ค๋ก ๋ฐ๊ฟ ์ต๊ณ ์ ์๊ฐ์ ๋๋ค...
์ด์ฒ๋ผ VBA๋ฅผ ํ์ฉํ๋ฉด ๋จ์ ๋ฐ๋ณต ์ ๋ฌด๋ฅผ ๊ทน์ ์ผ๋ก ์ค์ด๊ณ , ์ํ๋ ์์์ ๋ฌธ์๋ฅผ ๋๋์ผ๋ก ์๋ ์์ฑํ ์ ์์ต๋๋ค. ์ถํํฉ๋๋ค! ๐
