본문 바로가기

it 잡담

엑셀의 셀 값을 가져와서 워드에서 단어 바꾸기

워드 문서 내에서 단어 바꾸기 작업을 반복할 때 씁니다. 지정된 엑셀 파일안에 sheet1 에 있는 b2 값을 c2 값으로 바꾸기 합니다. b2와 c2교체, b3와 c3교체, b4와 c4교체, b5와 c5..... 이렇게 됩니다.

 

코드 내에 붉은 색 부분에서 바꾸기에 사용하려는 엑셀파일을 지정해주실 수 있습니다.

 

문서 내에서 블럭을 설정하여 블럭내에서만 단어 바꾸기를 하고 싶을 때는 파란색 부분 값 wdfindcontinue 를 wdfinestop 으로 바꾸고 하시면 될 수도 있습니다. 되겠거니 싶어서 해봤는데, 될 때도 있고 안 될 때도 있었습니다. 

 

바꾸기를 하면서 엑셀을 훑어내려오다가 b열에서 값이 비어있으면 동작을 멈춥니다. b1000을 c1000과 교체한 후에도 멈춥니다. 단어를 더 사용하고 싶으면 아래 코드에서 밑줄 친 부분 뒤쪽 숫자를 더 크게 잡아주세요.

 

매크로 작성 능력이 없어서, 매크로 녹화하기와 다른 사람들이 만든 매크로를 짜집기 해서 만들었습니다. 그래서 쓸데없는 코드가 포함되어 동작속도가 느릴 수 있습니다. 하지만 매크로 개선 등은 제가 해드릴 수가 없습니다.

 

 

 

 

 

 

Sub findcontinue()
'
' findcontinue Macro
'
'
Dim xlApp As Object
Dim xlBook As Object
Dim strName1 As String
Dim strName2 As String

Const strWorkbookName = "C:\Users\kamawan\Desktop\replace.xlsx"
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
Set xlBook = xlApp.Workbooks.Open(fileName:=strWorkbookName)
xlApp.Visible = True

For i = 2 To 1000

strName1 = xlBook.Sheets(1).Range("B" & i)

If IsEmpty(strName1) Then Exit Sub

strName2 = xlBook.Sheets(1).Range("C" & i)

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = strName1
.Replacement.Text = strName2
.Forward = True
.Wrap = wdfindcontinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.CorrectHangulEndings = True
.HanjaPhoneticHangul = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


Next
End Sub

 

 

'it 잡담' 카테고리의 다른 글

ai burn partition tool  (0) 2022.07.30
anapa pro 설정 소프트웨어  (0) 2019.12.06