VBA Excel Macro exportar datos de un libro a otro sin abrir el fichero de destino.

Necesito una idea de una macro para exportar los datos de un libro de Excel (hoja DATOS) en otro que se encuentra en la misma ruta sin abrirlo (fichero DESTINO) y pegarlo en la primera fila libre de una hoja de ese libro llamada HISTORICO.

Encuentro muchos ejemplos para importar datos de un libro a otro sin necesidad de abrir el libro origen, y tengo algo montado así, pero no consigo adaptarlo y no encuentro ejemplos para hacerlo al revés. ¿Alguna sugerencia?

1 respuesta

Respuesta
2

Las opciones que conozco en VBA, son abrir el archivo, actualizar el archivo, guardar el archivo y cerrar el archivo. Con el apagado de la pantalla, no se percibe que el libro se abra y se cierre.

En VBA puedes leer datos de un libro cerrado. Pero escribir en un libro cerrado, no conozco opciones.

Si quieres, te ayudo con la opción de VBA. También explica, por qué es necesario que el libro permanezca "cerrado".


En Visual Basic, podrías hacerlo, pero con esta opción, tal vez alguien con Visual Basic te pueda ayudar.

ya lo he sacado, pero poniendo siempre la misma celda de destino, no sé cómo modificar que se pegue en la primera fila libre desde A (sustituir esta constante: Const celdaDestino = "A2") y que me conserve el formato, al llevármelo al libro destino me cambia el formato de algunas celdas. Puedo volver a dárselo después, pero lo mismo se trata de un error al copiar y pegar.

Set wsOrigen = Worksheets("HOJAORIGEN")

Set wsDestino = wbDestino.Worksheets("HOJADESTINOS")

 'celdas de origen y destino

Const celdaOrigen = "A2"

Const celdaDestino = "A2" 'de la columna A la primera fila libre

 'Rangos origen y destino

Set rngOrigen = wsOrigen.Range(celdaOrigen)

Set rngDestino = wsDestino.Range(celdaDestino)

'Rango de celdas origen

rngOrigen.Select

Range(Selection, Selection.End(xlDown)).Select

Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy

'Pegar datos en celda destino

RngDestino.PasteSpecial Paste:=xlPasteValues

Pero, ¿cómo guardas en el libro destino si está cerrado?

¿Puedes poner tu código completo?

Utiliza el icono para insertar código, revisa la siguiente imagen para que observes cómo debes insertar el código aquí en el foro.

Conozco esa macro y no pega en un libro cerrado.



No sé cómo modificar que se pegue en la primera fila libre desde A

Cambia esta línea:

Set rngDestino = wsDestino.Range(celdaDestino)

Por esta:

Set RngDestino = wsDestino.Range("A" & Rows.Count).End(3)(2)


Y que me conserve el formato

Cambia esta línea:

RngDestino.PasteSpecial Paste:=xlPasteValues

Por esta:

RngDestino.PasteSpecial Paste:=xlPasteAll

[Recuerda valorar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas