robertocm
unread,Jul 5, 2012, 4:27:59 AM7/5/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Manel escribió el 18/03/2008 17:10 :
> Estoy trabajando con Excel y Word 2003 SP2, creando una macro en un documento
> Excel para crear un documento word a partir de una plantilla
> (presupuesto.dot) ya definida, pero no se como asignar el valor de la celda
> G24 de la hoja excel a un campo de la plantilla word llamado "ndias".
> El código que he generado es el siguiente (copiando de aquí y de
> allí):
>
> Sub Pressupost()
> Dim adoc As Word.Application
> Dim wdoc As Word.Document
>
> Set adoc = CreateObject("Word.Application")
>
> adoc.Visible = True
> Set wdoc = adoc.Documents.Add("C:Documents and SettingsManelDatos de
> programaMicrosoftPlantillasPressupost.dot")
> adoc.DisplayAlerts = wdAlertsNone
>
> ' hasta aquí funciona bien (abre un .doc a partir de la plantilla .dot),
> pero a partir
> ' de aquí la asignación no la hace, y estoy probando distintas
> sentencias,
> tal
> ' como se puede apreciar
>
> adoc.ActiveDocument.Variables("ndias").Value = Range("g24")
> adoc.ActiveDocument.Fields.Update
>
> ' wdoc.Variables("ndias").Value = Range("g24")
> ' wdoc.Fields.Update
> ' Set wdoc = Nothing
>
> End Sub
>
> Agradezco de antemano el interés y por supuesto la ayuda que me
> podáis
> prestar.
>
>
> Manel
>
Os Comento como hago esto:
En el documento de Word de "destino" inserto un campo del tipo
DOCVARIABLE en cada posición en la que quiero copiar datos desde excel.
La ventaja que encuentro en usar campos DOCVARIABLE en lugar de marcadores es
al
repetir el mismo dato en varios sitios del documento, podemos insertar varias
veces el mismo campo DOCVARIABLE pero esto no parece posible con marcadores
(Por
ejemplo: para rellenar un contrato a partir de datos en excel algunos valores
como los nombres de los contratantes aparecerán repetidos en varios
sitios en el documento).
Esta es la macro en excel 2003 que utilizo para rellenar datos de contratos en
word 2003:
Sub Practicas_Anexo_cubrir()
Dim wordApp As Object
RazonSocial = Cells(ActiveCell.Row, 15)
DataConvenioMarco = Cells(ActiveCell.Row, 14)
FechaInicio = Cells(ActiveCell.Row, 22)
FechaFin = Cells(ActiveCell.Row, 23)
NombreAlumno = Cells(ActiveCell.Row, 20)
DNIalumno = Cells(ActiveCell.Row, 21)
CargoFirma = Cells(ActiveCell.Row, 19)
NombreFirma = Cells(ActiveCell.Row, 18)
On Error Resume Next
Set wordApp = CreateObject("Word.Application")
wordApp.Documents.Open Filename:=ThisWorkbook.Path &
"PRACTICASDocumentosAnexo-Convenio-Plantilla.doc"
wordApp.ActiveDocument.Variables("RazonSocial").Value = RazonSocial
wordApp.ActiveDocument.Variables("DataConvenioMarco").Value =
DataConvenioMarco
wordApp.ActiveDocument.Variables("FechaInicio").Value = FechaInicio
wordApp.ActiveDocument.Variables("FechaFin").Value = FechaFin
wordApp.ActiveDocument.Variables("NombreAlumno").Value = NombreAlumno
wordApp.ActiveDocument.Variables("DNIalumno").Value = DNIalumno
wordApp.ActiveDocument.Variables("CargoFirma").Value = CargoFirma
wordApp.ActiveDocument.Variables("NombreFirma").Value = NombreFirma
wordApp.ActiveDocument.Fields.Update
wordApp.Selection.Goto What:=0 'Vamos ó inicio do documento
'Esto sería usando marcadores en word pero resulta más
cómodo con campos de tipo docvariable
'cuando repetimos texto en varios sitios de un documento
'With wordApp
'.Selection.Goto What:=-1, Name:="RazonSocial1" 'wdGoToBookmark
'.Selection.TypeText Text:=RazonSocial
'.Visible = True
'.Selection.Goto What:=-1, Name:="RazonSocial2" 'wdGoToBookmark
'.Selection.TypeText Text:=RazonSocial
'.Visible = True
'End With
'Mostrar ventana
wordApp.Visible = True
'Guardo el documento con otro nombre
wordApp.Documents("Anexo-Convenio-Plantilla.doc").SaveAs
ThisWorkbook.Path & "PRACTICASAnexo-" & Replace(NombreAlumno,
" ", "_")
Set wordApp = Nothing
End Sub