2016-08-25 1 views
0

단어 문서에서 밑줄이 표시된 단어를 찾아 html 태그로 변환하는 매크로를 만들 수 있는지보고 싶었습니다. 나는 그것을하기 위해 매크로를 기록하려했지만 모든 단어에 태그를 추가한다. 또한 코드의 일부를 제공 내가 사용하려고 :VBA에서 밑줄 친 단어 찾기 및 추가 Word

Dim myWords()  As String 
Dim i    As Long 
Dim myDoc   As Document: Set myDoc = ActiveDocument ' Change as needed 
Dim aRange   As Range: Set aRange = myDoc.Content 
Dim sRanges   As StoryRanges: Set sRanges = myDoc.StoryRanges 
Dim ArrayCounter As Long: ArrayCounter = 0 ' counter for items added to the array 
Dim Sentence  As Range 
Dim w    As Variant 

Application.ScreenUpdating = False 
ReDim myWords(aRange.Words.Count) ' set a array as large as the 
            ' number of words in the doc 

For Each Sentence In myDoc.StoryRanges 
    For Each w In Sentence.Words 
     If w.Font.Underline <> wdUnderlineNone Then 
      myDoc.Sentence.Range.InsertBefore "<u>" 
      myDoc.Sentence.Range.InsertAfter "</u>" 
     End If 

답변

1

그럼이 코드는 familiar를 보인다!

각 밑줄이 그어진 단어 주위에 태그를 추가해야하는 작업에 대해 살펴 보겠습니다. 밑줄 속성을 제거한 다음 태그를 추가해야합니다. 그렇지 않으면 word는 새로 도입 된 태그를 새로운 단어로 취급하고 프로세스를 반복합니다.

Sub ChangeUnderLineToHTML() 
    Dim myDoc   As Document: Set myDoc = ActiveDocument ' Change as needed 
    Dim aRange   As Range: Set aRange = myDoc.Content ' Change as needed 
    Dim sRanges   As Variant: Set sRanges = myDoc.StoryRanges 
    Dim sentence  As Object 
    Dim w    As Object 

    For Each sentence In sRanges 
     For Each w In sentence.Words 
      If w.Font.Underline <> wdUnderlineNone Then 
       w.Font.Underline = wdUnderlineNone 
       w.Text = "<u>" & w.Text & "</u>" 
      End If 
     Next w 
    Next sentence 

    'Clean Up 
    Set myDoc = Nothing 
    Set aRange = Nothing 
    Set sRanges = Nothing 
    Set w = Nothing 
    Set sentence = Nothing 
End Sub 
+0

라이언에 감사드립니다. 이것은 훌륭하게 작동했지만 문장에 밑줄이 그어져있는 경우가 아니라 모든 단어에 태그를 붙였습니다. 그러나 나는 그것을 고치는 방법을 알아야한다. 다시 한번 감사드립니다! –