Access - Access-Word

 
Vista:

Access-Word

Publicado por Rafi (71 intervenciones) el 11/11/2009 14:18:20
Hol a todos, quisiera saber si me podeis ayudar a implementaren este código que lleva los datos de un formulario de access auna plantilla de documentos de word. Yo quiero que en vez de a una sola plantilla, se pueda enviar los datos a varias, esdecir a la que yo escoja. Gracias de antemano. Os pego el código que dicho se a de paso lo encontré en esta web.

Option Compare Database
Const strDOT = "Registro.dot"
Const strDOC = "RMS.doc"

Private Sub Comando26_Click()
Dim strPATH, strPROP
Dim WordApp As Object
strPATH = Application.CurrentProject.Path
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = False
.Documents.Add strPATH & "\" & strDOT
End With
With WordApp.ActiveDocument
For Each strPROP In .CustomDocumentProperties
Select Case strPROP.Name
Case "DAD1": strPROP.Value = Nz(Me.DAD1, " ")
Case "DAD2": strPROP.Value = Format(DAD2, "dd/mm/yyyy")
Case "DAD3": strPROP.Value = Nz(Me.DAD3, " ")
Case "DAD4": strPROP.Value = Nz(Me.DAD4, " ")
Case "DAD5": strPROP.Value = Nz(Me.DAD5, " ")
Case "DAD6": strPROP.Value = Nz(Me.DAD6, " ")
Case "DAD7": strPROP.Value = Nz(Me.DAD7, " ")
Case "Otro": strPROP.Value = Nz(Me.Otro, " ")

End Select
'Tambien se puede hacer con
'strPROP.Value = Me(strPROP.Name)
Next
End With
With WordApp
.ActiveDocument.Fields.Update
.ActiveDocument.SaveAs strPATH & "\" & strDOC
.Quit
End With
Set WordApp = Nothing
MsgBox "DOCUMENTO LISTO PARA VISUALIZAR, NO OLVIDE REPASAR"
End Sub

Private Sub Comando27_Click()
Dim strPATH
Dim appWord As Object
strPATH = Application.CurrentProject.Path
Set appWord = CreateObject("Word.basic")
With appWord
.appmaximize
.fileopen strPATH & "\" & strDOC
.viewpage
End With
Set appWord = Nothing
DoCmd.Close
End Sub
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:Access-Word

Publicado por mi menda (1111 intervenciones) el 11/11/2009 19:49:01
Hola:
Deberias hacerte un cuadro combinado con los nombres de la plantilla y su ruta:

Plantilla1.dot - C/MiCarpeta/Plantilla1.dot
Plantilla2.dot - C/MiCarpeta/MisPlantillas/Plantilla2.dot

Luego sustituye

Const strDOT = "Registro.dot"

Por

Dim strDOT As String
strDOT = MiCuadroCombinado.Column(1)

Y

.Documents.Add strPATH & "\" & strDOT

Por

.Documents.Add strDOT

Debería de funcionar aunque el código lo he visto a "votepronto".

Un saludo
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

RE:Access-Word

Publicado por Rafi (71 intervenciones) el 12/11/2009 10:09:30
Hola mi menda, he intentado aplicar loque me aconsejas pero me da error, podrías echarle un viztazo a ver que hago mal. Gracias. Te dejo el código:

Option Compare Database
' ATENCION
' No estan incluidos los controles de errores ni las posibles excepciones.
' Se asume que la plantilla está en la misma carpeta que la mdb

Dim strDOT As String
strDOT = MiCuadroCombinado75.Column(1)
strDOT = MiCuadroCombinado75.Column(2)


Private Sub bot01_Click()
On Error Resume Next
Dim strPATH, strPROP
Dim StrPath2 As String
Dim WordApp As Object
strPATH = Application.CurrentProject.Path
StrPath2 = "E:\Documents and Settings\ordenpublico1.AYTOTARIFA\Mis documentos\ANGELSENA"
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = False
.Documents.Add strDOT

End With
With WordApp.ActiveDocument
For Each strPROP In .CustomDocumentProperties
Select Case strPROP.Name
Case "DATO1": strPROP.Value = Nz(Me.DATO1, 0)
Case "DATO2": strPROP.Value = Nz(Me.DATO2, " ")
Case "DATO3": strPROP.Value = Format(DATO3, "dd/mm/yyyy")
Case "DATO4": strPROP.Value = Nz(Me.DATO4, " ")
Case "DATO5": strPROP.Value = Nz(Me.DATO5, " ")
Case "DATO6": strPROP.Value = Nz(Me.DATO6, " ")
Case "DATO7": strPROP.Value = Nz(Me.DATO7, " ")
Case "DATO8": strPROP.Value = Nz(Me.DATO8, " ")
Case "DATO9": strPROP.Value = Nz(Me.DATO9, " ")
Case "DATO10": strPROP.Value = Nz(Me.DATO10, " ")
Case "DATO11": strPROP.Value = Nz(Me.DATO11, " ")
Case "DATO12": strPROP.Value = Nz(Me.DATO12, " ")
Case "DATO13": strPROP.Value = Nz(Me.DATO13, " ")
Case "DATO14": strPROP.Value = Nz(Me.DATO14, " ")
Case "DATO15": strPROP.Value = Nz(Me.DATO15, " ")
Case "DATO16": strPROP.Value = Nz(Me.DATO16, " ")
Case "DATO17": strPROP.Value = Nz(Me.DATO17, " ")
Case "DATO18": strPROP.Value = Nz(Me.DATO18, " ")
Case "DATO19": strPROP.Value = Nz(Me.DATO19, " ")
'Case "TEXTO": strPROP.Value = Nz(Me.TEXTO, " ")
End Select
WordApp.Application.ActiveDocument.Variables("texto").Value = Nz(Me.TEXTO, " ")
'Tambien se puede hacer con
'strPROP.Value = Me(strPROP.Name)
Next
End With
With WordApp
.ActiveDocument.Fields.Update
.ActiveDocument.SaveAs StrPath2 & "\" & strDOC & Me.DATO1 & ".doc"
.Quit
End With
Set WordApp = Nothing
MsgBox "DOCUMENTO LISTO PARA REDACTAR"

End Sub

Private Sub bot02_Click()
Dim Verdocumento As String
Dim appWord As Object
Verdocumento = "E:\Documents and Settings\ordenpublico1.AYTOTARIFA\Mis documentos\ANGELSENA"
Set appWord = CreateObject("Word.basic")
With appWord
.appmaximize
.fileopen Verdocumento & "\" & strDOC & Me.DATO1 & ".doc"
.viewpage
End With
Set appWord = Nothing
DoCmd.Close

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

RE:Access-Word

Publicado por mi menda (1111 intervenciones) el 12/11/2009 20:06:35
Hola:
Dim strDOT As String
strDOT = MiCuadroCombinado75.Column(1)
strDOT = MiCuadroCombinado75.Column(2)

Primero estás metiendo el valor de la 2ª columna del cuadro combinado en la variable y a continuación cambias el valor de la variable por el valor de la 3ª columna del cuadro combinado. Sí como te dije haces el cuadro combinado con el nombre de la plantilla en la primera columna y la ruta completa del archivo en la segunda columna, y queremos meter el valor de esa segunda columna en la variable, entonces...:

strDOT = NombreCuadroCombinado.Column(1)

Porque en los cuadros combinados y cuadros de listas se empiezan a contar las columnas desde 0, o sea , la 1ª columna seria la 0, la 2ª columna sería la 1, etc..
Tu has puesto Column(2) que equivaldría a la 3ª columna, columna que no tiene el cuadro combinado pues solo consta de 2.

También puedes poner la propiedad Columna dependiente del cuadro combinado en el valor 2, y entonces valdría solo con:

strDOT = NombreCuadroCombinado.

Un saludo
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

RE:Access-Word

Publicado por Rafi (71 intervenciones) el 13/11/2009 09:14:59
Bueno, creo que no estoy preparada para esto, es demasiado para mí, no consigo que funcione.
Podría alguien echarle un vistazo al código o mejor a la BD entra y ponerme en el camino. Gracias
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