2010-04-27 58 views
6

Estoy intentando crear un documento de Word con una macro de palabras muy simple. La macro busca un marcador que he colocado en el texto y luego agrega una fecha, 2 semanas en el futuro, en esa ubicación.Cómo saltar a un marcador en Word-VBA e insertar texto?

Pero cuando creo un documento nuevo a partir de la plantilla, sigo obteniendo el marcador no encontrado. He tenido que pasar muchas veces y, a veces, el marcador está allí, a veces está allí pero no le permite hacer clic en "Ir a".

¿Cómo puedo hacer que funcione? He agregado un pequeño fragmento de código al evento Document_New() pero que sigue informando Marcador no encontrado.

Tengo el documento en un archivo rar ya que mi servidor web no puede manejar las extensiones .dotm. Document

¿Cómo puedo hacer para que cuando se produzca un documento nuevo a partir de esta plantilla, el nuevo documento tenga la fecha, 2 semanas adelante, colocada entre las 2 secciones en negrita?

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

¿Se puede copiar el código directamente en su respuesta? –

Respuesta

1

Esto podría deberse al uso de ActiveDocument en su código. El documento de la macro que llama aún puede ser el ActiveDocument, por lo que no encontraría ningún marcador. Así es como lo haría desde un documento/plantilla habilitado para macros de llamada que funciona 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 
Cuestiones relacionadas