Visual Basic para Aplicaciones - Modificar la cabecera de un WORD con macro en EXCEL

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de Antoni Masana

Modificar la cabecera de un WORD con macro en EXCEL

Publicado por Antoni Masana (175 intervenciones) el 17/05/2017 19:30:17
Sigo Buscando una solución para poder ejecutar una macro que me abra un documento WORD modifique la cabecera y lo guarde en otra ubicación.

El proceso funciona de la siguiente forma, cuando se abre la hoja Excel se muestra un formulario donde se introducen los datos y botones, los principales son Ejecutar y Salir que vuelve a la hoja del libro.

Tengo la siguiente función a la que se le pasa la ruta y el nombre de un documento Word que tiene que hacer lo siguiente:

1.- Abrir el documento.
2.- Colocarse en el documento.
3.- guardarlo en otra ubicación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Abrir_Documento(DocW)
    Dim Mi_Docu As Object, File As String
 
    Set Mi_Docu = CreateObject("Word.Application")
 
    Mi_Docu.Visible = True
    Mi_Docu.Documents.Open (DocW)
 
    If Not Mi_Docu Is Nothing Then
       Mi_Docu.Activate
 
       <<< A Q U I   E S T A   M I   G R A N   P R O B L E M A >>>
 
       File = c_Destin + Mid$(DocW, Len(c_Planti) + 1) : Mi_Docu.SaveAs (DocW)
    End If
    Set Mi_Docu = Nothing
End Sub

Hasta la linea 10 funciona, a la 14 se le supone, y en la 12 ¿Que he de poner?.

Esta es la macro que tengo que ejecutar es decir poner la llamada en la linea 12 de la anterior, pero solo funciona si la ejecuto desde un documento WORD.

Primero las constantes el excel no las reconoce y si las defino en la primera línea ya me da error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Sub Modificar()
    With ActiveWindow
        If .View.SplitSpecial <> wdPaneNone Then
           .Panes(2).Close
        End If
 
        If .ActivePane.View.Type = wdNormalView Or .Type = wdOutlineView Then
           .ActivePane.View.Type = wdPrintView
        End If
 
        .ActivePane.View.SeekView = wdSeekCurrentPageHeader
    End With
 
    With Selection
        .MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        .Delete Unit:=wdCharacter, Count:=1
        .InlineShapes.AddPicture FileName:="<<< LOGO >>>", _
                                 LinkToFile:=False, _
                                 SaveWithDocument:=True
 
        .MoveRight Unit:=wdCell
        .MoveRight Unit:=wdCell
        .MoveRight Unit:=wdCell
        .MoveRight Unit:=wdCell
        .MoveRight Unit:=wdCell
        .MoveRight Unit:=wdCell
 
        .Delete Unit:=wdCharacter, Count:=1
        .Font.Bold = True
        .TypeText Text:="Revisó:"
        .Font.Bold = False
        .TypeText Text:="<<< Texto-1 >>>"
 
        .MoveRight Unit:=wdCell
 
        .Delete Unit:=wdCharacter, Count:=1
        .Font.Bold = -1
        .TypeText Text:="Aprobó:"
        .Font.Bold = 0
        .TypeText Text:="<<< Texto-2 >>>"
    End With
 
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

Tengo otra opción, bueno de hecho tango varias.

- La mas compleja es hacer el formulario en Word.
- La otra es: desde el Excel abrir un documento Word en blanco en el que pondrá estas dos funciones y ejecutar la macro del propio Word y entonces funcionada.

Y ahora la pregunta ¿Se puede hacer? ¿Funciona? ¿Como se hace?

Saludos a todos.
\\//_
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad