2017-10-03 3 views
0

J'ai eu une grande macro pour insérer le numéro de page au début d'une note de fin MS Word here:Comment supprimer deux premiers mots d'un MS Word Note

Sub InsertPageNumberForEndnotes() 
Dim endNoteCount As Integer 
Dim curPageNumber As Integer 
If ActiveDocument.Endnotes.Count > 0 Then 
    For endNoteCount = 1 To ActiveDocument.Endnotes.Count 
    Selection.GoTo What:=wdGoToEndnote, Which:=wdGoToAbsolute, _ 
     Count:=endNoteCount 
    curPageNumber = Selection.Information(wdActiveEndPageNumber) 
    ActiveDocument.Endnotes(endNoteCount).Range.Select 
    ActiveDocument.Application.Selection.Collapse _ 
     (WdCollapseDirection.wdCollapseStart) 
    ActiveDocument.Application.Selection.Paragraphs(1).Range.Characters(3)._ 
     InsertBefore "Page " & CStr(curPageNumber) & ". "   
    Next 
End If  
End Sub 

qui traite les notes de fin de

^1 Blah blah blah 
^2 Blah blah blah 
^3 Blah blah blah 

Dans

^1 Page 2. Blah blah blah 
^2 Page 23. Blah blah blah 
^3 Page 119. Blah blah blah 

J'ai besoin maintenant une deuxième macro pour "annuler" les modifications de rem oving the "Page nn -" afin que je puisse réexécuter la macro pour actualiser les numéros de page. Ma pensée est que je dois sélectionner les 3 premiers mots de chaque note de fin qui commence par "Page", ou peut-être sélectionner la gamme jusqu'à l'index du premier caractère "-"? Quel changement aurais-je besoin de la macro ci-dessus pour sélectionner et supprimer le texte ajouté?

Répondre

1

Cela devrait faire l'affaire.

Sub InsertPageNumberForEndnotes() 
    ' 04 Oct 2017 

    Dim Note As EndNote 
    Dim Sp() As String 
    Dim n As Long 

    For Each Note In ActiveDocument.Endnotes 
     With Note.Range 
      ' remove "vbTextCompare" to make the search case sensitive 
      n = InStr(1, .Text, "page", vbTextCompare) 
      If n Then    ' you could make this "If n = 1" 
       m = InStr(1, Txt, ". ") 
       .Text = Mid(Txt, m + 2) 
      End If 
     End With 
    Next Note 
End Sub 
+1

au lieu de la boucle 'For' intérieure, vous pouvez saisir le texte:' = Txt de Split (Mid (Txt, n), "", 4) (3) – xidgel

+0

@xidgel merveilleuse idée! Je l'ai incorporé dans ma réponse suggérée immédiatement. – Variatus

+0

@Variatus, merci! Pour info, j'ai modifié un peu ma question et votre code pour refléter ce qui a fonctionné pour moi – buttonsrtoys