Access - Actualizar sólo datos de ACCESS

   
Vista:

Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 12/10/2010 17:06:03
Hola a todos.
Tengo un formulario de ACCESS que con un código envia los datos a una plantilla de Word. Si modifico los datos en ACCESS se actualiza también el documento de Word y hasta ahí todo bién. Lo que quiero, es que si tengo que modificar algo en ACCESS y vuelvo a abrir el documento de nuevo, sólo modifique los datos de ACCESS, es decir no mé elimine otras cosas que he añadido depués al documento directamente una vez guardado, por ejem: fotos, graficos etc. gracias

ESTE ES EL CÓDIGO. MI MENDA TÚ YA LO CONOCES, otra manita por favor amigo.

Private Sub Comando1767_Click()
Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim campoWord As Object
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String

On Error GoTo ManejadorError

strRutaPlantilla = "C:\Accidentes\Plantillas\Fotos.dot"
strNuevoDocumento = "C:\Accidentes\Almacen Fotos\" & Me.IDG03 & ".doc"
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
If MsgBox("El Documento ya existe. ¿Desea actualizarlo", _
vbInformation + vbYesNo + vbDefaultButton2, _
"I2000 GADAR Actualizar Documento") = vbNo Then
'Esta linea la ponemos solo sí queremos que se abra el documento
Exit Sub
End If
End If

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

On Error Resume Next

campoWord.Item("IDG02").Value = IDG02
campoWord.Item("IDG03").Value = IDG03
campoWord.Item("TF01").Value = TF01
campoWord.Item("TF02").Value = TF02
campoWord.Item("TF03").Value = TF03
campoWord.Item("TF04").Value = TF04
campoWord.Item("TF05").Value = TF05
campoWord.Item("TF06").Value = TF06

With appWord
.Visible = True
.Selection.WholeStory
.Selection.Fields.Update
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
.Selection.EndKey Unit:=wdStory
.Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
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 pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Actualizar sólo datos de ACCESS

Publicado por mi menda (1111 intervenciones) el 15/10/2010 18:32:02
Hola
Lo que estas haciendo es crear un documento nuevo a partir de una plantilla, sí ya tienes el documento lo que hay que hacer es abrirlo y actualizarlo

If strTestPlantilla <> "" Then
If MsgBox("El Documento ya existe. ¿Desea actualizarlo", _
vbInformation + vbYesNo + vbDefaultButton2, _
"I2000 GADAR Actualizar Documento") = vbNo Then
Exit Sub
Else
strRutaPlantilla = strNuevoDocumento
End If
End If

With appWord
.Visible = True
.Selection.WholeStory
.Selection.Fields.Update
If strRutaPlantilla <> strNuevoDocumento Then
.ActiveDocument.SaveAs strNuevoDocumento
Else
.ActiveDocument.Save
End If
.Activate
.Selection.EndKey Unit:=wdStory
.Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
End With

Fíjate en el cambio de estos dos bloques de código. El código va sin probar, y quita esta línea que creo que ya no hace falta.

.Selection.EndKey Unit:=wdStory

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:Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 15/10/2010 22:22:50
Hola Mi menda. Estoy probando pero por mas que cambio los bloques de código no funciona. Sale una etiqueta notificando "Error nº 91 Variable de objeto o bloque With no establecido". Yo sigo haciendo pruebas, aunque te agradeceria que probaras tú tambien por si yo hago algo mal. 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

RE:Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 16/10/2010 11:02:01
Mi menda. Los cambios en estos dos bloques no cambian nada, se actualizan los datos que hago en Access pero si añado a ese archvo cuando vuelvo a abrirlo se marchan las fotos u otras cosas que añado directamente al archivo guardado. Piensa, debe de haber algo. A lo mejor no mé he explicado bién. Lo que hago cuando el archivo esta guardado es abrirlo de nuevo y añadir fotos, por ejemplo. Lo cierro y lo vuelvo a abrir. el programa dice "desea actualzar el archivo" y yo pulso si, cuando se abre el documento ya no estan las fotos. Sólo quiero que actualice los datos de Access, es decir los campo de access donde describo lo que representa la foto es decir el pie de foto. No se si mé he explicado ahora. Gracias té estaba esperando como agua de mayo Mi menda.
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:Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 16/10/2010 11:46:39
Mi menda se me habia olvidado Else en el primer bloque. Sigo probando y lo más que consigo es que tal y como pones el cambio en los dos bloques de código con la línea .Selection.EndKey Unit:=wdStory ó sin ellas es que mé abra un documento con el registro activo que se abre con la ventana de Guarda como.
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:Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 16/10/2010 11:56:24
Mi menda se me habia olvidado Else en el primer bloque. Sigo probando y lo más que consigo es que tal y como pones el cambio en los dos bloques de código con la línea .Selection.EndKey Unit:=wdStory ó sin ellas es que mé abra un documento con el registro activo que se abre con la ventana de Guarda como.
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:Actualizar sólo datos de ACCESS "resuelto"

Publicado por blas (143 intervenciones) el 16/10/2010 16:40:42
Mi menda conseguido después de muchos cambios. funciona como yo quiero sólo cambiando el primer bloque. Muchas gracias.

Otra más si no es mucho pedir por si té asomas esta tarde a la web.

Seria mucho perdir si además de que el documento lo guardase con Me.campoid, también creara una carpeta automáticamente de nombre x y se guardase en ella, es posible Mi menda. Gracias de nuevo.
Es para otro documento que tengo en mente, saludos
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:Actualizar sólo datos de ACCESS

Publicado por mi menda (1111 intervenciones) el 16/10/2010 17:59:08
Hola

Para crear una carpeta

MkDir "C:\Mi nueva carpeta"

Para crear una subcarpeta dentro de esta carpeta

MkDir "C:\Mi nueva carpeta\Subcarpeta 1"

No se como tienes ahora el código, pero veo que ya trasteas un poco con él, así que supongo que más o menos sabrás donde ponerlo.

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:Actualizar sólo datos de ACCESS

Publicado por blas (143 intervenciones) el 16/10/2010 21:01:10
Hala Mi menda.
A ver si me has entendido, abajo esta el código mas o menos o parecido al anterior, este es para otros documentos y necesitaria que la carpeta la cree alguna línea del código, si se puede claro. Por ejem: El documento se guardaria en la carpeta Almacen dentro de otra carpeta que debe crear el código y por ejem: con número correlativo, es decir carpeta 1, carpeta 2, carpeta 3 etc. Lo que en difinitiva quiero es a la carpeta almacen llamarla 2010 y ahí meter todas las subcarpetas que se generen automaticamente junto con el documento. No se si mé entiendes o me explico bién. Gracias Mi menda por dedicarme tu tiempo.


Private Sub Comando309_Click()
Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim campoWord As Object
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String

On Error GoTo ManejadorError

' Ruta completa de la plantilla de Word
strRutaPlantilla = "C:\blas\Carta.dot"
' Ruta y nombre del nuevo documento
strNuevoDocumento = "C:\blas\almacen\" & Me.idnumreg & ".doc"
'Sí existe el archivo lo abrimos y nos salimos,
' sino existe lo creamos
MkDir "C:\Mi nueva carpeta"
strTestPlantilla = Nz(Dir(strNuevoDocumento))

If strTestPlantilla <> "" Then
If MsgBox("El Documento ya existe. ¿Desea actualizarlo", _
vbInformation + vbYesNo + vbDefaultButton2, _
"I2000 GADAR Actualizar Documento") = vbNo Then
'Esta linea la ponemos solo sí queremos que se abra el documento
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If
End If

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

On Error Resume Next

campoWord.Item("idnumreg").Value = idnumreg
campoWord.Item("nombre").Value = nombre
campoWord.Item("fechasuceso").Value = fechasuceso
campoWord.Item("horasuceso").Value = horasuceso
campoWord.Item("dni").Value = dni
doc.Variables("manif").Value = Me.manif
' Sigue con los demás campos de word

With appWord
.Visible = True
.Selection.WholeStory
.Selection.Fields.Update
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
.Selection.EndKey Unit:=wdStory
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