Macro pasar datos de excel a word

17/02/2009 - 12:07 por Amaia | Informe spam
Buenas a todos:
A ver si me podéis ayudar con la siguiente consulta:
Tengo un índice de informes creado en excel a través del cual busco y abro
con hipervínculo los documentos guardados en una carpeta.
Ahora lo que me gustaría es, crear una macro
- Primero para abrir el formato de informe .doc vacío y luego
- Trasladar los datos (p.e. título, autor) introducidos en el índice de
Excel a los campos específicos del formato word creados para ello.
Gracias de antemano.
Saldos.
 

Leer las respuestas

#1 Amaia
25/02/2009 - 17:54 | Informe spam
Hola Hector!!!
Muchas gracias por tus consejos. Ya hemos conseguido hacer lo que queriamos.
Saludos,
Amaia



"Héctor Miguel" wrote:

hola, Amaia !

1) no veo muy eficiente que se utilice el evento '_selectionchange' para constantemente abrir una instancia de word -???-

2) para este asunto, es necesario que en tu proyecto de macros (vba/excel) establezcas una referencia a la libreria
con el modelo de objetos de word (editor de vba -menu:- herramientas / referencias...)
libreria: Microsoft (Office) Word x.0 Object Library

3) para esto tambien se usa la referencia al modelo de objetos de word (punto anterior) te sugiero/recomiendo...
que consultes la ayuda en linea de excel o word por las propiedades "BuiltInDocumentProperties"

-> fuera de que no me ha gustado el campo Fill-In en word (que requiere respuesta del usuario para actualizar sus datos)
el siguiente ejemplo usa el metodo "SendKeys" (poco recomendable) para llenar el dalogo que aparece al actualizar el Fill-In
(mientras surge alguna mejor propuesta o alguna sugerencia por otro "tipo" de campos) -???-

saludos,
hector.

OJO: el ejemplo solo "usa" (GetObject) NO "crea" (CreateObject) una instancia de word con "el documento" ya abierto
Y... llama al campo ("Lugar" ???) NO por su nombre, sino por su indice (asumiendo que es el numero 1 ???)
(por si te decides por incluirlo dentro de tus instrucciones CreateObject) -???-

Sub Modifica_Propiedades_Word()
With GetObject(, "word.application")
.Activate
With ActiveDocument
SendKeys Range("b15").Text & "{tab} ", False
.Fields(1).Update
.BuiltinDocumentProperties("title").Value = Range("c15")
.BuiltinDocumentProperties("author").Value = Range("d15")
.BuiltinDocumentProperties("subject").Value = Range("e15")
End With
End With
End Sub

__ 1 __
> La macro que tenemos hecha es basicamente para que nos copie un documento
> con un nombre que le pongamos en una de las celdas del documento de forma automatica.
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Target.Column = 13 And Target.Row > 2 And (Target.Cells.Count = 1) Then
> On Error GoTo err
> Set fs = CreateObject("Scripting.FileSystemObject")
> nombre = Cells(Target.Row, 13)
> destino = "C:\DocumentosMACRO\" & nombre
> Set fw = CreateObject("word.application")
> fw.Visible = True
> fw.documents.Open (destino)
> Set fw = Nothing
> GoTo fin
> err: If Cells(Target.Row, 12).Value = "inglés" Then
> origen = "C:\DocumentosMACRO\Plantillas\plantilla inglés.doc"
> Else
> origen = "C:\DocumentosMACRO\Plantillas\plantilla castellano.doc
> End If
> fs.Copyfile origen, destino, False
> Set fw = CreateObject("word.application")
> fw.Visible = True
> fw.documents.Open (destino)
> Set fw = Nothing
> End If
> fin:
> End Sub
__ 2 __
> Ahora viene el siguiente paso que es completar algunos campos del documento "destino"
> con valores de las celdas que tenemos definidas en el Excel.
> Queremos hacer dos cosas diferentes que posiblemente tendran formas distintas de programar:
> A) Queremos rellenar un campo que tenemos definido en el documento de Word como "Insertar / Campo / Fill-in"
> que ya existe en el documento de Word que tenemos. Si por ejemplo queremos meter el valor de la celda B15
> en el campo definido como "Lugar", que codigo hay que usar para ello?
__ 3 __
> B) Queremos rellenar los campos que estan puestos en "Archivos / Propiedades" del documento de Word.
> Nos interesaria poder rellenar los campos de Titulo, Autor, Asunto, Administrador, Organizacion
> que estan todos ellos en la pesta#a "Resumen".
> Cada uno de los campos estaria definido en una celda del Excel dentro de la misma fila
> es decir titulo = C15, autorÑ5, asuntoá5, etc.
>
> A ver si nos puedes echar un cable con esto

__ previos __
>> 1) (seguramente) tendras que dejar de abrir el documento (word) desde hiervinculos -?-
>>
>> 2) vendria bien si expones el codigo (hasta donde lo tengas "solucionado") para tratar de evitar "cambios de direccion"
>> (por algun tipo distinto de macros que pudiera entorpecer lo que ya se tiene evanzado)
>>
>> 3) esto ya seria "el relleno" de la macro, lo que pretendo es no adivinar lo que ya te este funcionando -???-
>>
>> saludos,
>> hector.
>>
>> p.d. (sinceramente, creo que esta parte de las -re-preguntas es importante que lo comentes)...
>> >> o sea, como podriamos (re)crear un entorno de trabajo exactamente "igual al tuyo" ???
>> >> y... que, como, cuando, de donde, a donde, ... son las tareas a realizar ???



Preguntas similares