Access - Insertar campos access en word

   
Vista:

Insertar campos access en word

Publicado por Javier Sáenz Medina (1 intervención) el 26/07/2010 12:35:26
Necesito hacer un informe desde una base de datos de access personalizado para cada persona, a través de un word. El botón insertado en el formulario me abre Ms Word y me crea el informe.
Al insertar las variables solo me incluye las de un formulario (Formulario consulta)(NOMCOMP, Edad, FREV). No soy capaz de incluir las del formulario litiasis (TAMLIT, LOCLIT...) de la misma base de datos.

Os mando el código VB con todas las probaturas que se me han ocurrido, las que están precedidas del acento (' )son las que he probado y no me funcionan, a ver si me podeis dar una solución. Mil gracias

Javier Sáenz.

Private Sub Comando86_Click()

Dim MSWord As Object
Dim Documento As Object
Dim Selection As Object


Set MSWord = CreateObject("Word.Application")
Set Documento = MSWord.Documents.Add
Set Parrafo = MSWord.Selection

MSWord.Visible = True

With Parrafo

.TypeText "Nombre: " & NOMCOMP
.TypeParagraph
.TypeText "Edad: " & Edad
.TypeParagraph
.TypeText "Fecha consulta actual: " & FREV
.TypeParagraph
.TypeParagraph
.TypeText "HISTORIA NEFROUROLÓGICA"
.TypeParagraph
'stDocName = "Formulario litiasis"
'DoCmd.OpenForm stDocName
'strsql = "SELECT [Formulario litiasis] from orders WHERE Forms![Formulario litiasis]!NHCA = Forms![Formulario consulta]!NHCCS"
'.TypeText "medida en " TAMLIT & "mm en " & LOCLIT

'[Form_Formulario litiasis].SetFocus

.TypeText "Litiasis nº: " & NHCL & "diagnosticada con fecha: " & FDIAGL & "medida en " & TAMLIT & "mm en " & LOCLIT
.TypeParagraph
.TypeText Text:="Procedimiento en pruebas"
.WholeStory
.Copy

End With
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

RE:Insertar campos access en word

Publicado por 2pl (461 intervenciones) el 26/07/2010 16:57:35
Hola Javier, yo utilizo otro metodo (funciona eh)
Una tabla con dos campos llamados
CodToReplace (texto 50)
ReplaceWithFieldName (texto 50)
el campo CodToReplace contendrá los nombres que se insertarán en word (formato {NOMBRE OPERARIO}
El campo ReplaceWithFieldName (texto 50) contendrá los nombres que figuran en el formulario FORMS!DATOSPERSONALES!txtNOMBRE
(El campo {NOMBRE OPERARIO} contendra el dato de FORMS!DATOSPERSONALES!txtNOMBRE y asi con todos los campos que quieras .
En el documento word pondrás los campos que quieras insertar de la tabla con este formato {NOMBRE OPERARIO} etc...

En el botón de comando (cmdCreateLetter) para imprimir... "Al hacer click " pones este codigo

Private Sub cmdCreateLetter_Click()

Dim dbLocal As Database
Dim snpReplaceCodes As Recordset
Dim strCurrAppDir As String
Dim strFinalDoc As String
Dim varReplaceWith As Variant
Dim docWord As Word.Document

On Error GoTo Error_cmdCreateLetter_Click
Set dbLocal = CurrentDb()
strCurrAppDir = Left$(dbLocal.Name, InStrRev(dbLocal.Name, "\"))

strFinalDoc = strCurrAppDir & "PODER.doc" 'NOMBRE DEL DOCUMENTO WORD"

On Error GoTo Error_cmdCreateLetter_Click
Set appWord = New Word.Application
Set docWord = appWord.Documents.Add(strFinalDoc)
appWord.Visible = True
'abro ahora la tabla de las sustituciones
Set snpReplaceCodes = dbLocal.OpenRecordset("DatosdelPoder", dbOpenSnapshot)

Do While Not snpReplaceCodes.EOF

varReplaceWith = Eval(snpReplaceCodes!ReplaceWithFieldName)
varReplaceWith = IIf(IsNull(varReplaceWith), " ", CStr(varReplaceWith))

With docWord.Content.Find

.Execute FindText:=snpReplaceCodes!CodeToReplace, _
ReplaceWith:=varReplaceWith, Format:=True, _
Replace:=wdReplaceAll

End With

snpReplaceCodes.MoveNext

Loop

snpReplaceCodes.Close
Exit Sub

Error_cmdCreateLetter_Click:

Beep
MsgBox "Ha ocurrido el error:" & vbCrLf & _
Err.Description, vbCritical, "OLE Error!"
Exit Sub

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