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 (195 intervenciones) el 17/05/2017 19:30:48
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

Modificar la cabecera de un WORD con macro en EXCEL

Publicado por JuanC juanc2942@gmail.com (552 intervenciones) el 18/05/2017 19:54:55
creo que sí se puede... te paso algunas nuevas pistas...

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Const wdCharacter = 1
Const wdCell = 12
Const wdExtend = 1
 
Sub test()
Dim doc$
doc = Application.GetOpenFilename
Call Abrir_Documento(doc)
End Sub
 
Sub Abrir_Documento(DocW)
Dim word As Object, File As String
Dim doc As Object
 
Set word = CreateObject("Word.Application")
If word Is Nothing Then Exit Sub
 
word.Visible = True
Set doc = word.Documents.Open(DocW)
 
If Not doc Is Nothing Then
   word.Activate
   Call Modificar(word)
   'File = c_Destin + Mid$(DocW, Len(c_Planti) + 1)
   doc.SaveAs DocW + "2.docx"
   doc.Close
End If
 
Set doc = Nothing
Set word = Nothing
End Sub
 
Sub Modificar(doc As Object)
 
 
    With doc.Selection
        .MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        .Delete Unit:=wdCharacter, Count:=1
        '.InlineShapes.AddPicture Filename:="<>", _
                                 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
 
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Modificar la cabecera de un WORD con macro en EXCEL

Publicado por Antoni Masana (195 intervenciones) el 23/05/2017 06:56:11
Ya he solucionado el problema.

He creado un proceso en Excel para modificar los ficheros de Excel y un proceso en Word para modificar los ficheros de Word.

La macro de Excel no pueden modificar los documentos Word. Y la prueba se realiza grabando MACRO a la que pasas al Word deja de grabar.

Tiene mas sentido manipular Excel desde el Word que al revés, de hecho por sus características el Excel es como una base de datos pero más compleja.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad