
π 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 Sub
3λ¨κ³: λ²νΌμ λ§€ν¬λ‘ μ°κ²° λ° μ€ν
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λ₯Ό νμ©νλ©΄ λ¨μ λ°λ³΅ μ 무λ₯Ό κ·Ήμ μΌλ‘ μ€μ΄κ³ , μνλ μμμ λ¬Έμλ₯Ό λλμΌλ‘ μλ μμ±ν μ μμ΅λλ€. μΆνν©λλ€! π