Dividir word en varios documentos

Tengo la necesidad de dividir un word en varios archivos independientes.

Recibo cada día un archivo que contiene de 25 a 125 documentos en su interior. Entre ellos están separados por la leyenda *[SALTO_PAGINA]*

De momento lo hacemos a mano, y nos lleva 4-6 horas pues el documento puede tener 200 paginas, y lo que hacemos es ir creando PDF de cada documento, y para ello insertamos un salto de pagina después de cada leyenda (esto si he conseguido automatizarlo con un macro).

Lo mas aproximado que he encontrado es lo que dice la ayuda de microsoft, pero soy incapaz de aprovechar el código. Intente sustituir la leyenda anterior por \page o \sección pero no funciono (lo se, es obvio que no funcionaria... Pero la desesperación te hace ser poco critico...)

En esta pagina esta el código que intento manipular:

<a>http://support.microsoft.com/kb/216201/es</a>

1 respuesta

Respuesta
1

He dado con la respuesta, aunque no es efectiva 100%, así que si alguien puede "afinarla" se lo agradecería.

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.

Esta solución es solo un parche... me gustaría hacerlo todo automáticamente, es decir, que se sustituyera la frase SALTO_PAGINA por un salto de sección y después se ejecutara el macro y así no pasar por el notepad... pero no ha habido manera...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas