2016-06-07 3 views
0

Grundsätzlich möchte ich den Text zwischen den Tags in Fett umwandeln. Dieser Text wird immer in den Kommentaren sein. Der aktuelle Code tut nichts. Ich bin nicht wirklich sicher, ob dieser Code überhaupt Sinn macht, aber ich verwende normalerweise VBA für Excel und das Wort scheint etwas kniffliger zu sein.Wie bekomme ich den gesamten Text zwischen <strong></strong> in MS Word fett mit VBA?

Sub Bold() 
    Dim eCom As Comment 
    Dim iFound As Integer 
    Dim rbold As Range 
    Dim iDot As Integer 
    Dim flag As Boolean 
    Dim aDoc As Document 
    Set aDoc = ActiveDocument 
    flag = True 
    Application.ScreenUpdating = False 
    For Each eCom In ActiveDocument.Comments 

     iFound = InStr(eCom.Range.Text, "<strong>") 
     iDot = 0 
     If iFound > 0 Then 

      iDot = InStrRev(eCom.Range, "</") - iFound + 1 
      Set rbold = aDoc.Range(Start:=eCom.Range.Start + iFound, End:=eCom.Range.Start + InStrRev(eCom.Range, "<")) 
      rbold.Select 
      Selection.Font.Bold = wdToggle 
     End If 

    Next eCom 
    Application.ScreenUpdating = True 

End Sub 
+0

den Code arbeiten? Gibt es einen Fehler beim Ausführen? Was genau ist die Frage hier? – OpiesDad

+0

Code macht nichts fett. –

Antwort

1

Es gibt ein paar Probleme hier. Zunächst scheint es, dass die Kommentarbereiche nicht die gleiche Nummerierung wie die Dokumentbereiche verwenden. So

Set rbold = aDoc.Range(Start:=eCom.Range.Start + iFound, End:=eCom.Range.Start + InStrRev(eCom.Range, "<")) 

ist eigentlich nicht der Bereich, in den Kommentaren, es ist vielmehr ein Bereich in dem Dokument mit dem Platz in dem Kommentar beginnen, der den starken HTML-Tag hat.

Zweitens, auch wenn diese Arbeit war, würde es den bolding an der falschen Stelle starten, mit „strong>“ ab

Drittens gibt es keinen Grund, den Bereich zu wählen, nur um es zu fett eingestellt.

Dieser Code wird das tun, was Sie wollen (ich aus einer Linie, kommentierte wie ich konnte nicht herausfinden, was es tun sollte zu):

Sub Bold() 
    Dim eCom As Comment 
    Dim iFound As Integer 
    Dim rbold As Range 
    Dim iDot As Integer 
    Dim flag As Boolean 
    Dim aDoc As Document 
    Dim newCom As Comment 
    Set aDoc = ActiveDocument 
    flag = True 
    Application.ScreenUpdating = False 
    For Each eCom In ActiveDocument.Comments 

     iFound = InStr(eCom.Range.Text, "<strong>") 
     iDot = 0 
     If iFound > 0 Then 

      'iDot = InStrRev(eCom.Range, "</") - iFound + 1 
      Set rbold = eCom.Range 
      rbold.MoveEnd Unit:=wdCharacter, Count:=-(Len(rbold) - InStrRev(rbold, "</") + 1) 
      rbold.MoveStart Unit:=wdCharacter, Count:=iFound + Len("<strong>") - 1 
      rbold.Bold = True 

     End If 

    Next eCom 
    Application.ScreenUpdating = True 

End Sub 
+0

Vielen Dank! –

Verwandte Themen