Saltar al contenido

Copiar y Pegar (Mejorar Macro)


Recommended Posts

publicado

Hola a todos, acá nuevamente solicitando su tiempo para el siguiente inconveniente que tengo ?

La siguiente macro, encontrada en la web, me funciona a la perfección. Sin embargo, cuando el archivo esta en uso crea un nuevo archivo temporal con la extension (.ldb) y es ahi donde la macro no funciona. Como resolver este inconveniente?

Sub CopiarArchivos()

     FileCopy "Y:\INVENT.mdb", "Y:\INVENT2.mdb"
    

End Sub

Saludos

publicado

Sacado de la ayuda de VBA

Observaciones

Si intenta usar la instrucción FileCopy en un archivo que está abierto actualmente, se produce un error.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Una opción sería con FSO. En un módulo independiente pega esto.

Function Copia(strRutaOrigen As String, StrRutaDestino As String) As Boolean
   Dim fso As Object
   Set fso = CreateObject("Scripting.FileSystemObject")
   If Not fso.FileExists(StrRutaDestino) Then _
         fso.CopyFile strRutaOrigen, StrRutaDestino: DoEvents: Copia=True
End Function

la función te devolverá verdadero sí todo sale bien. Y la puede llamar desde donde necesites así:

if Copia("Y:\........INVENT.mdb", "Y:\........INVENT2.mdb") then 
  Msgbox "Se hizo la copia"
else
  Msgbox "No se hizo la copia"
end if

Espero te sirva

publicado

Hola @ikanni, es interesante tu aporte me ha funcionado perfectamente. Gracias por su ayuda.

Por curiosidad, en vez de copiar, pegar y luego importar algunas tablas de una base de datos de access 2007 que necesito, es posible desde excel importar tablas de access abiertas?

Saludos

publicado
Hace 3 horas, CarlosKurt dijo:

Hola @ikanni, es interesante tu aporte me ha funcionado perfectamente. Gracias por su ayuda.

Por curiosidad, en vez de copiar, pegar y luego importar algunas tablas de una base de datos de access 2007 que necesito, es posible desde excel importar tablas de access abiertas?

Saludos

No entiendo bien lo que quieres, pero todo dependerá de como tengas configurada la BBDD en cuestión de accesos. Si la BBDD es BackEnd y la tienes en un SO servidor es posible que puedes hacer importaciones y actualizaciones y la mejor manera sería con ADO. Sino, pues no lo sé, no he trabajado de esa manera pero bueno es cuestión de probar. Suerte.

publicado
Hace 10 horas, ikanni dijo:

No entiendo bien lo que quieres, pero todo dependerá de como tengas configurada la BBDD en cuestión de accesos. Si la BBDD es BackEnd y la tienes en un SO servidor es posible que puedes hacer importaciones y actualizaciones y la mejor manera sería con ADO. Sino, pues no lo sé, no he trabajado de esa manera pero bueno es cuestión de probar. Suerte.

Hola @ikanni, la base de datos tiene las siguientes detalles:

  • Se encuentra en un servidor Windows Server Enterprise Service Pack 1
  • Inicialmente fue desarrollada en Access 97 pero es abierta al Access 2007 con algunas limitaciones. Al abrir la base de datos aparece una ventana (imagen adjunta) en donde se le dice que "No" convierta a la version mas reciente.
  • Para trabajar en la base de datos se realiza a través de un sistema (imagen adjunta) hecha de formularios (al menos eso es lo que veo). Es un sistema de inventario y venta.
  • Los usuarios ingresan a través de los formularios (sistema) desde distintas PCs

Mencionado lo anterior no puedo ingresar a la base de datos .mdb por que los usuarios estan usando el sistema en simultaneo.

Creo que es posible ingresar a la base de datos .mdb por que si los usuarios ingresan al sistema por medio de un formulario entonces cabe la posibilidad de que se pueda acceder a la base de datos desde excel 2016 y 2007.

Espero haberme hecho entender.

Saludos

 

 

image.png

image.png

publicado

Me imagino que trabajarán contra un BackEnd de datos, la MDB que tiene los registros, buscala en el servidor y sí puedes abrir la desde tu puesto (solo contendrá tablas), podrias leer, modificar y eliminar registros desde excel.

publicado
Hace 3 horas, ikanni dijo:

Me imagino que trabajarán contra un BackEnd de datos, la MDB que tiene los registros, buscala en el servidor y sí puedes abrir la desde tu puesto (solo contendrá tablas), podrias leer, modificar y eliminar registros desde excel.

Hola @ikanni
Informandome un poco sobre BackEnd de datos. Se podria decir que se trabaja contra un BlackEnd. Por que solo se trabaja mediante la red local de la empresa y no por via web. Desde mi Pc puedo acceder a la base de datos.MDB solo cuando ningun usuario está utilizando el sistema. Por eso la macro que aportaste de Funtion Copia me facilito mucho ya que desde una copia puedo importar la informacion de las tablas que necesito. Pero, como mencione anteriormente, me gustaría importar la informacion al excel 2016 o 2007 cuando la base de datos.MDB este en uso por los usuarios.

Buscando en la web en donde explicaba el Early vs. Late Binding encontre esta macro:

Dim PPApp As Object
Dim PPPres As Object
Dim PPSlide As Object

Set PPApp = GetObject("Powerpoint.Application")
Set PPPres = PPApp.Presentations.Add
Set PPSlide = PPPres.Slides.Add(1, 11)  '' ppLayoutTitleOnly = 11

'' Do Some Stuff Here

With PPPres
    .SaveAs "C:\My Documents\MyPreso.ppt"
    .Close
End With

PPApp.Quit

Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing

 

Esta es para conectarse a una presentación de Power Point que esta abierta, ¿Usando esta misma macro como hago para conectarme a una tabla especifica de access que estaria siendo usando (abierta)?

PD: Como que el tema cambio un poco a lo que solicite en el inicio, ¿Es conveniente que lo vuelva a publicar como otro tema?

Saludos.

publicado
Hace 18 horas, CarlosKurt dijo:

Hola @ikanni
Informandome un poco sobre BackEnd de datos. Se podria decir que se trabaja contra un BlackEnd. Por que solo se trabaja mediante la red local de la empresa y no por via web. Desde mi Pc puedo acceder a la base de datos.

 

Yo creo que sí puedes acceder a la MDB (BackEnd -MDB de las tablas) del servidor desde tu puesto, deberías poder acceder desde Excel. No se me ocurre otra cosa, en estos momentos.

 

publicado
Hace 5 horas, ikanni dijo:

Yo creo que sí puedes acceder a la MDB (BackEnd -MDB de las tablas) del servidor desde tu puesto, deberías poder acceder desde Excel. No se me ocurre otra cosa, en estos momentos.

 

Hola @ikanni
Si puedo acceder, sólo cuando nadie esta utilizando el sistema.

Bueno de todas maneras gracias por su tiempo ?.

Doy por terminado el tema

Saludos

  • 3 weeks later...
publicado
En 13/4/2020 at 8:14 , CarlosKurt dijo:

Hola @ikanni
Si puedo acceder, sólo cuando nadie esta utilizando el sistema.

Bueno de todas maneras gracias por su tiempo ?.

Doy por terminado el tema

Saludos

Hola a todos

Buscando desde hace dias pude resolver el inconveniente a este tema:

Dejo el codigo por si a alguien le pueda servir
 

Sub AñadirDesdeAccess()

Dim conexion As Object
Dim consulta As String
Dim cadenaConexion As String
Dim contador As Integer
Set conexion = CreateObject("ADODB.connection")
cadenaConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2020\INGRESOS2020.mdb"
consulta = "select * from CABECERAMOVIMIENTO;"
conexion.Open cadenaConexion
Set Recordset = conexion.Execute(consulta)

If Not (Recordset.EOF And Recordset.BOF) Then
    Sheets("Hoja1").Cells(1, 1).CopyFromRecordset Recordset
End If

Recordset.Close
Set Recordset = Nothing
conexion.Close
Set conexion = Nothing
End Sub

 

El unico incoveniente que tengo que es tengo que usar Excel 2007, he buscando como instalar Microsoft.ACE.OLEDB.12.0 en excel 2016 pero aun no he podido resolverlo. Lei tambien sobre Microsoft Access Database Engine 2010 Redistributable que actua como compatibilidad de accesss 2007 con excel 2016. Sin embargo, no he podido aun resolver. Por si alguien tuvo un inconveniente asi y pudo resolverlo, por favor compartirlo.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.