2010-04-27 6 views
6

J'essaie de créer un document Word avec une macro de mot très simple. La macro recherche un signet que j'ai placé dans le texte, puis ajoute une date, 2 semaines dans le futur, à cet emplacement.Comment sauter à un signet dans Word-VBA et insérer du texte?

Mais lorsque je crée un nouveau document à partir du modèle, je continue d'avoir un signet introuvable. Je l'ai traversé des tas de fois et parfois le signet est là, parfois c'est là mais ne vous permettant pas de cliquer sur "Aller à".

Comment puis-je le faire fonctionner? J'ai ajouté un petit morceau de code à l'événement Document_New() mais cela continue à signaler Bookmark not found.

J'ai le document dans un fichier rar car mon serveur web ne peut pas gérer les extensions .dotm. Comment puis-je faire en sorte que lorsqu'un nouveau document est produit à partir de ce modèle, le nouveau document comporte la date, 2 semaines à l'avance, placée entre les 2 sections en gras?

Sub Two_Weeks_Ahead() 
''# Two_Weeks_Ahead Makro 
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks" 
    With ActiveDocument.Bookmarks 
     .DefaultSorting = wdSortByName 
     .ShowHidden = False 
    End With 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd") 
End Sub 

Private Sub Document_New() 
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks" 
    With ActiveDocument.Bookmarks 
     .DefaultSorting = wdSortByName 
     .ShowHidden = False 
    End With 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd") 
End Sub 
+0

Pouvez-vous copier le code directement dans votre réponse? –

Répondre

1

Cela peut être dû à l'utilisation de ActiveDocument dans votre code. Le document de la macro appelante peut toujours être le ActiveDocument, de sorte qu'il ne trouve aucun signet. Voici comment je le ferais à partir d'un document/modèle de macro appelant qui fonctionne bien.

Sub AddTwoWeeks() 
    Dim d As Document 
    Set d = Documents.Add("C:\Users\Me\Desktop\Title.dotx") 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Dim b As Bookmark 
    Set b = d.Bookmarks("TwoWeeks") 
    b.Range.Text = Format(dt, "yyyy-MM-dd") 
End Sub 
Questions connexes