2010-06-07 2 views
4

Quelqu'un at-il un code VBA pour créer un signet dans la première colonne d'une table MSWord?Créer un signet dans la première colonne de la table MSWord

Disons que j'ai une table qui ressemble à ceci

.-----.----------------. 
. ref . Title   . 
.-----.----------------. 
. 1 . Title 1  . 
.-----.----------------. 
. 2 . Title 2  . 
.-----.----------------. 
. foo . Title 3  . 
.-----.----------------. 
. bar . Title 4  . 
.-----.----------------. 

et je veux un fragment de code VBA qui crée un signet nommé « T1_1 » sur la chaîne « 1 » dans la ligne 2/colonne 1 et signets nommé "T1_2", "T1_foo" et "T1_bar" sur les chaînes dans les autres cellules de la colonne 1.

Cela ne me dérange pas de coder en dur le préfixe "T1" (et de se substituer à d'autres tables à chaque fois). Cela ne me dérange pas de sélectionner des tables avant d'exécuter la macro, cela ne me dérange pas de donner à ces cellules un format spécial, et cela ne me dérange pas d'avoir un signet superflue "T1_ref" de la première rangée - donc le code ne besoin de faire la distinction entre le titre du tableau et la ligne du tableau.

Merci beaucoup à l'avance

Répondre

4
Public Sub Testing() 
    Dim strText As String 
    Dim i As Integer, j as Integer 
    For j = 1 To ThisDocument.Tables.Count 
     For i = 2 To ThisDocument.Tables(j).Rows.Count 
      strText = StripNonPrint(ThisDocument.Tables(j).Cell(i, 1).Range) 
      ActiveDocument.Bookmarks.Add Range:=ThisDocument.Tables(j).Cell(i, 1).Range, Name:="T1_" & strText 
     Next i 
    Next j 
End Sub 

Private Function StripNonPrint(ByVal s As String) 
    StripNonPrint = Trim(Replace(s, vbCr & Chr(7), "")) 
End Function 

Cela devrait être suffisant pour vous permettre de continuer votre tâche. Cela ajoutera un signet à chaque cellule de la première colonne (à l'exception de la première ligne) de n'importe quelle table du document en cours.

+0

+1. Bonne réponse! –

+0

cool merci ... juste des ajustements mineurs à faire: ajouter j pour dim, remplacer "j" pour "1" dans toutes les instructions de boucle "for i ..." et affiner la fonction strip, changer "for j = 0" à "pour j = 1" - c'était ... merci encore – MikeD

Questions connexes