2010-04-27 17 views
6

Sto cercando di creare un documento di Word con una macro di parole molto semplice. La macro cerca un segnalibro che ho inserito nel testo e quindi aggiunge una data, 2 settimane nel futuro, in quella posizione.Come saltare a un segnalibro in Word-VBA e inserire il testo?

Ma quando creo un nuovo documento dal modello continuo a ricevere il segnalibro non trovato. Ci sono passato un sacco di volte e a volte il segnalibro è presente, a volte è lì ma non ti permette di fare clic su "Vai a".

Come posso farlo funzionare? Ho aggiunto un piccolo pezzo di codice all'evento Document_New() ma continua a riportare Segnalibro non trovato.

Ho il documento in un file rar poiché il mio server web non può gestire le estensioni .dotm.

Come posso fare in modo che quando un nuovo documento viene prodotto da questo modello, il nuovo documento abbia la data, 2 settimane prima, posizionata tra le 2 sezioni in grassetto?

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

È possibile copiare il codice direttamente nella risposta? –

risposta

1

Questo potrebbe essere a causa dell'uso di ActiveDocument nel codice. Il documento della macro chiamante potrebbe ancora essere il ActiveDocument, quindi non troverà alcun segnalibro. Ecco come lo farei da un documento/modello abilitato per le chiamate che funziona bene.

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 
Problemi correlati