de Excel a campo en plantilla de Word

18/03/2008 - 17:10 por Manel | Informe spam
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 Settings\Manel\Datos de
programa\Microsoft\Plantillas\Pressupost.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

Preguntas similare

Leer las respuestas

#1 Monica May
18/03/2008 - 23:44 | Informe spam
Hola Manuel,

Bien dependiendo del campo que estes utilizando en el documento de word por
ejemplo si es un campo de texto cuyo marcador se llame >> ("ndias")

adoc.ActiveDocument.FormFields("ndias").Result = Range("g24")

ya que para dichos campos hay que utilizar el objeto >> FormFields

no obstante si no es este campo nos comentas ok? :-)

Saludos
Monica


www.fermu.com
www.teladearana.es
www.elguille.info
"Manel" escribió en el mensaje de noticias
news:
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 Settings\Manel\Datos de
programa\Microsoft\Plantillas\Pressupost.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
Respuesta Responder a este mensaje
#2 robertocm
05/07/2012 - 10:27 | Informe spam
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 & "\PRACTICAS\Documentos\Anexo-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 & "\PRACTICAS\Anexo-" & Replace(NombreAlumno, " ", "_")

Set wordApp = Nothing

End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida