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.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.