Access - Ayuda en código

 
Vista:

Ayuda en código

Publicado por Sito (143 intervenciones) el 21/04/2009 10:49:53
Hola amigos. Necesito que alguien me diga que código deberia crear para que una macro abra una plantilla de Word de manera que el documento coja como nombre de archivo para guardar el número Id (autonumérico o no) del formuario donde inserto los datos. Gracias.
La plantilla estaria en c:Mis documentosPlantillasInforme.doc
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:Ayuda en código

Publicado por mi menda (1111 intervenciones) el 22/04/2009 18:45:18
Hola:
Primero debes de activar la Referencia Microsoft Word X.x Object Library. Luego te creas una carpeta nueva para guardar los documentos, es decir por un lado tendrás la plantilla y en otro directorio los nuevos documentos que se creén a partir de ella. Luego pon este código:

On Error GoTo manejadorError

Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String

' Ruta completa de la plantilla de Word
strRutaPlantilla = "C:/Documents and Settings/Etc/Mi plantilla.doc"
' Ruta y nombre del nuevo documento
strNuevoDocumento = "C:/etc/documentos nuevos/" & Me.CampoId & ".doc"

' Comprobamos que el nuevo archivo no este ya creado
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
MsgBox "El Archivo: " & strNuevoDocumento & " ya existe"
Exit Sub
End If

Set appWord = CreateObject(Class:="Word.Application")
Set docs = appWord.Documents
Set doc = docs.Add(strRutaPlantilla)

With appWord
.Visible = True
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
End With

manejadorErrorSalir:
Exit Sub
manejadorError:
If Err.Number = 429 Then
Set appWord = CreateObject(Class:="Word.Application")
Resume Next
Else
MsgBox Err.Description, , "Error Nº: " & Err.Number
Resume manejadorErrorSalir
End If

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:Ayuda en código

Publicado por mi menda (1111 intervenciones) el 24/04/2009 10:51:08
Hola:
susituye esto:

' Comprobamos que el nuevo archivo no este ya creado
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
MsgBox "El Archivo: " & strNuevoDocumento & " ya existe"
Exit Sub
End If

Por esto:

' Sí existe el archivo lo abrimos y nos salimos,
' sino existe lo creamos
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If

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:Otro vistazo mi menda

Publicado por Sito (143 intervenciones) el 24/04/2009 07:47:26
Muchas gracias mi menda. Creo que he hecho lo que me has dicho y no consigo que el código se ejecute correctamente. Me da un error de compilación. Si no te importa repasarlo y decirme donde me equivoco. He asociado el código al botón de un formulario y cuando ejecuto la macro se detiene en "Me" diciendo que hay un error de compilación -el uso de la palabra Me no es válido-. A continuación copio todo el código tal y como lo he escrito yo haber si localizas donde se encuentra el error y que es lo que hago mal. Gracias de nuevo mi menda espero que me vuelvas a ayudar.

Private Sub Comando1407_Click()

Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String

' Ruta completa de la plantilla de Word
strRutaPlantilla = "C:Mis documentosPlantillasInforme.doc"
' Ruta y nombre del nuevo documento
strNuevoDocumento = "C:/Mis documentos/Documentos Nuevos" & Me.CampoId & ".doc"

' Comprobamos que el nuevo archivo no este ya creado
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
MsgBox "El Archivo: " & strNuevoDocumento & " ya existe"
Exit Sub
End If

Set appWord = CreateObject(Class:="Word.Application")
Set docs = appWord.Documents
Set doc = docs.Add(strRutaPlantilla)

With appWord
.Visible = True
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
End With

manejadorErrorSalir:
Exit Sub
manejadorError:
If Err.Number = 429 Then
Set appWord = CreateObject(Class:="Word.Application")
Resume Next
Else
MsgBox Err.Description, , "Error Nº: " & Err.Number
Resume manejadorErrorSalir
End If
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:Eureka mi menda

Publicado por Sito (143 intervenciones) el 24/04/2009 08:30:48
Ya lo resolví mi menda. Muchiiisimas gracias. Me faltó poner el nombre del campo ID. Ahora tengo otro problema que creo no sea muy dificil de solucionar. Me abre el documento bien, me lo guarda bien, pero cuando lo cierro y vuelvo ha hacer click de nuevo en el boton para abrirlo, me dice que ya existe y no lo abre. Hay alguna solución para que el documento se pueda abrir y modificar cuantas veces quieras. Gracias de nuevo mi menda, eres un genio
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