Fragmentar word según palabra clave

Es la primera vez que trabajo con macros en Word,
hasta ahora lo he hecho en Excel y bastante bien, pero veo que en word
hay diferencias bastante marcadas.
ANTECEDENTE: Recibo información de diversas oficinas en formato word (.rtf) donde tengo varios documentos unidos en uno solo.
DATOS:
Estos documentos vienen seguidos, sin saltos de página ni páginas en
blanco, pero entre uno y otro hay una leyenda que pone *[SALTO_PAGINA]*
Son word muy extensos (entre 100 y 200 paginas)
Necesidad
PRINCIPAL: Necesito insertar un salto de página después de la leyenda
anterior para que cada documento empiece en una hoja nueva.
OBJETIVO FINAL: Seria genial que cada documento acabara en un nuevo archivo (.doc o .pdf)
QUE
TENGO: Gracias a vuestro foro encontré el código para insertar los
saltos de pagina después de la leyenda, pero solo se me ejecuta una vez
(En la primera leyenda) y el resto no.
QUE NECESITO: He
Pensado en ejecutar el código que inserte los saltos de pagina, pero en
vez de uno, haga dos, dejando una pagina en blanco entre documento y
documento. Después, cuando llegue al final del documento, vuelva al
principio e imprima en pdf o genere un nuevo archivo con las paginas que
haya entre pagina en blanco y pagina en blanco, por ejemplo. El nombre
del archivo me es indiferente, pues irremediablemente he de abrirlos uno
a uno para clasificarlos, así que ya los re-nombrare manualmente (es lo
que menos me preocupa).
Cada día recibo 1 o 2 archivos
Así, con entre 25 y 125 documentos cada uno, los estoy separando
manualmente... Y eso me lleva entre 4 y 5 horas cada día... Una
autentica matada...
Gracias de antemano
(PD No puedo enviar el archivo de ejemplo ya que contienen datos confidenciales)

1 Respuesta

Respuesta
1

El sistema que he seguido es este:

Solo funciona si el archivo se generó con versiones anteriores a Word 2003

1 Abro el .rtf con el Bloc de Notas (notepad, no wordpad)

2 en Edición>Sustituir ponemos lo siguiente

-Buscar: *[SALTO_PAGINA]*\par
-Sustituir por: \sect

Con esto sustituimos la linea de texto *[SALTO_PAGINA]*\par por un salto de seccion.

3 Guardamos con la misma extensión.

4 Ahora en word abrimos el archivo

5 Ejecutamos esta macro (yo he añadido un botón en la barra personalizada superior para ejecutar este macro)

Macro:

Sub CortarSecciones()
    ' Creado por Oscar Ballabriga
Application.ScreenUpdating = False
    ' Creamos la carpeta en el escritorio
    Dim obj  As Object      'VARIABLE PARA LA CREACCION OBJETOS
    Dim car  As Variant     'VARIABLE PARA RUTA Y NOMBRE CARPETA
    Set obj = CreateObject("WScript.Shell")
    car = obj.SpecialFolders("Desktop") & "\NotesSeparades"
    Set obj = Nothing
    Set obj = CreateObject("Scripting.FileSystemObject")
    If obj.FolderExists(car) = False Then obj.CreateFolder (car)
    Set obj = Nothing
   ' Criterio de busqueda
   Application.Browser.Target = wdBrowseSection
    ' Buscamos ultima pagina
   For i = 1 To ((ActiveDocument.Sections.Count) - 1)
      ' Seleccionamos el fragmento a cortar
      ActiveDocument.Bookmarks("\Section"). Range. Copy
      ' Pegamos en nuevo documento
      Documents. Add
      Selection. Paste
   ' Quitar el salto
      Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
      Selection.Delete Unit:=wdCharacter, Count:=1
     ChangeFileOpenDirectory car
      DocNum = DocNum + 1
      DatoFechador = Format(Date, "dd-mm-yyyy")
      DatoHora = Format(Now, "HHmm-ss.fff")
     ActiveDocument.SaveAs FileName:="Nota_Simple" & " - (" & DatoFechador & ")(" & DatoHora & ") - " & DocNum & ".doc"
     ActiveDocument.Close
      ' Ir al siguiente fragmento
     Application.Browser.Next
   Next i
   ActiveDocument.Close savechanges:=wdDoNotSaveChanges
Application.ScreenUpdating = True
End Sub

Con esto nos crea una carpeta en el escritorio donde están generados los nuevos documentos. En el nombre esta incluida la hora para mayor precisión y el numero de documento para comparar que se han generado todos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas