Vous êtes sur la page 1sur 15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

necesitomas.com

no trabajes para Excel, haz que Excel trabaje para ti


Buscar...

Buscar

Copiar datos desde un libro a otro sin necesidad de abrir los dos.
Re sponde r

26 envos / 0 nuevos

ltimo e nv o

Jue, 14/06/2012 16:38

JoseLuis
Casla...

Copiar datos desde un libro a otro sin necesidad de abrir los dos.
Tnego un libro Excel, con cinco hojas.
Los datos se introducen en la Hoja1. El
resto de las Hojas, hacen procesos sobre
estos datos de la Hoja1

ltima
Offline
accin:
Hace 1 semana
1 da
alta:
11/05/2012
15:15
Puntos: 1195

#1

A lo largo del tiempo, voy haciendo


modificaciones en el libro, para mejorar o
sencillamente para resulver pequeos
fallos detectados en el diseo...

Celebratethe
acceptance
ofeveryone,
everywhere.

El usuario ha introducido ya sus datos en


la Hoja1 y le envio la nueva version. Se
encuentra con que debe "traspasar" los
datos desde la version anterior y aunque
es obvio que puede hacerse por el recurso
de abrir los dos libros y copiar y pegar los datos desde la Hoja1 vieja a la Hoja1
nueva, ya que el formato de columnas, filas y celdas en general, es el mismo en las
dos versiones.
Puedo, sin dificultad, utiliz ando la Application.GetOpenFilename... escoger el fichero
donde estan los datos metidos, pero mi pregunta en concreto es: Se puede
gestionar este traspaso de datos desde el libro nuevo, sin necesidad de abrir el libro
viejo...?
La idea, es incluir un boton en alguna de las hojas del libro, y vincularlo al macro que
pudiera hacer ese proceso... Agradeceria cualquier pista al respecto...

Arriba

responder

Vie, 15/06/2012 08:48

pacomegia

#2

Re: Copiar datos desde un libro a otro sin necesidad de ...


Para leer del libro viejo Excel tendr que abrirlo, otra cosa es que se le muestre el
proceso al usuario.

ltima
Offline
accin:
Hace 18 horas
13 mins
alta:

Prueba a crear un objeto workbook que se refiera al libro antiguo y con l das los
pasos necesarios para traer la informacin al libro nuevo

Dim LibroAntiguo As Workbook

27/12/2006
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

1/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Set LibroAntiguo = Workbooks.Open(RutaAlArchivo) 'la ruta que obtienes con


getopenfilename
With LibroAntiguo
23:26
Puntos: 6105

'importas los datos que necesites

End With
LibroAntiguo.Close False 'cerramos sin guardar cambios
Set LibroAntiguo = Nothing
End Sub

si no quieres que el usuario vea el proceso puedes desactivar la actualiz acin de la


pantalla durante la macro
Application.ScreenUpdating=false 'al principio del proceso

Data Tools Suite

(http://www.necesitomas.com/prod/optipe/datatoolssuite)
Arriba

responder

Vie, 15/06/2012 15:21

JoseLuis
Casla...

(En respuesta a ...)

#3

Re: Copiar datos desde un libro a otro sin necesidad de ...


Muchas gracias Paco... una vez mas.
Voy a trabajar sobre la idea que me ofreces, y volvere a hacerme presente en el
Foro, tanto si responde a mi planteamiento, como si encuentro alguna dificultad.

ltima
Offline
accin:
Hace 1 semana
1 da
alta:
11/05/2012
15:15
Puntos: 1195

He querido responder pronto, porque preveo estar unos dias ocupado en otras
cosas. En cuanto salga de ello, lo probare.
De todas maneras, tiene toda la pinta de que va a funcionar...
Gracias, Paco.

Arriba

responder

Vie, 15/06/2012 16:03

joshua

#4

Re: Copiar datos desde un libro a otro sin necesidad de ...


Saludos.
Una opcin seria utiliz ar las viejas macrofucniones, un ejemplo.

ltima
Offline
accin:

Hace 1 ao 11
meses
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

2/15

28/8/2016

meses
alta:
10/06/2012
21:49
Puntos: 125

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Sub Obtener_Datos()
Application.ScreenUpdating = False
With Sheets("Hoja1")
'verificamos si hay datos en la hoja
'donde se almacenaran los resultados
datos = Application.CountA(.Range("A1:A11"))
'insertamos una linea para poder limpiar el rango
.Range("A1:D1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'si hay datos en la hoja donde se almacenaran los resultados
'los borramos para actualiz arla
With .Range("A2:D11")
If datos > 0 Then .ClearContents
'definimos de que libro extraeremos los datos
ruta_libro = "C:\Users\Usuario\Desktop"
nombre_libro = "Libroprueba.xls"
nombre_hoja = "Hoja1"
'insertamos las formulas
.Formula = "='" & ruta_libro & "\[" & _
nombre_libro & "]" & nombre_hoja & "'!a1"
'dejamos solo los valores
.Value = .Value
End With
'recorremos el rango para eliminar ceros
For b = 1 To 4
With .Columns(b)
.AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=00"
.SpecialCells(xlCellTypeVisible).ClearContents
End With
Next
'eliminamos la linea que habiamos inssertado
.Range("A1:D1").Delete Shift:=xlUp
End With
Application.ScreenUpdating = True
End Sub

Atte.
joshua

Arriba

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

responder

3/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Sb, 16/06/2012 11:04

JoseLuis
Casla...

(En respuesta a ...)

#5

Re: Copiar datos desde un libro a otro sin necesidad de ...


Te agradez co, Joshua, tu aportacion al tema.
Pero la verdad es que se me "escapan" muchas de las expresiones que utiliz as, en
las macrofunciones.

ltima
Offline
accin:
Hace 1 semana
1 da
alta:
11/05/2012
15:15
Puntos: 1195

Es mas, me llega a confundir, algunas de las lineas como esta:


.AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=00"
porque no entiendo el papel que desempea lo del formato con un cero... con dos...
De todas maneras, no puedo menos que agradecerte que hayas querido aportar tu
solucion al planteamiento que he hecho de los dos libros...
Saludos cordiales

Arriba

responder

Sb, 16/06/2012 12:04

joshua

#6

Re: Copiar datos desde un libro a otro sin necesidad de ...


Saludos.

ltima
Offline
accin:
Hace 1 ao 11
meses
alta:
10/06/2012
21:49
Puntos: 125

No es complicado en el ambito vba de excel la terminologia que uiliz o es la ms


comun y simple, pero bueno lo ms sencillo para entender que es lo que hace una
macro es utiliz ar un exit sub al final de una linea para detener la macro y ver que es
lo que realiz o en breve te adjuntare un ejemplo.

con respecto a la linea que indicas te amplio.

'recorremos el rango para eliminar ceros


'usamos un bucle para recorrer las columnas donde se insertaron las formulas
esto es para limpiarlas de ceros ya que si no existen datos se genera un cero en el
resultado.
For b = 1 To 4
'comando utiliz ado para no repetir una misma instruccin que en
'este caso seria Columns(b)
With .Columns(b)
'esta parte no es mas que un autofiltro simple que filtra los resultados con un cero o
'con doble cero
.AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=00"
'con esta linea borramos solo las celdas visibles
.SpecialCells(xlCellTypeVisible).ClearContents
End With
Atte.
joshua

Arriba

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

responder

4/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Lun, 18/06/2012 05:06

xoan
ninguen

#7

Re: Copiar datos desde un libro a otro sin necesidad de ...


Existen otras opciones, aunque van a requerir "algunos" conocimientos de VBA (para
entenderlo...)

ltima
Offline
accin:
Hace 1 ao 4
meses
alta:
19/01/2011
10:03
Puntos: 715

Incluyo directamente los enlaces, porque copiar+pegar tanto texto sera criminal. Y
porque, de todas formas, si la informacin a intercambiar reside en un libro sin
macros, la forma ms simple es hacerlo como indica Paco. Lo siguiente es para
gente que tenga "mucho muchsimo" inters en probar y trastear.
http://www.trazex.com/2012/05/12/abrirarchivosenreferencias
externas/(http://www.trazex.com/2012/05/12/abrirarchivosenreferencias
externas/)

http://www.trazex.com/2012/05/03/intercambiodeinformaci%C3%B3n
Noquiero
Acepto

Enestesitioutilizamoscookies(comoen
conotrosarchivosmediante
todaspartes)

(http://www.trazex.com/2012/05/03/intercambiodeinformaci%C3%B3ncon
Utilizamos ado/
cookies
nuestras para el funcionamiento del
otrosarchivosmedianteado/)
sitio, de Google
para mostrarte publicidad, y de AddThis
para mostrar contenido relevante que pueda interesarte.
Haciendo clic
en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.
Con el primero, se podran abrir libros con el mismo nombre (no sera la primera vez

que me ocurra). Con lo del segundo, se pueden importar datos de un libro, sin
necesidad de abrirlo (por tanto, sin que se ejecuten sus macros).

Un saludo

www.TrazEX.com(http://www.TrazEX.com) (solucione s sobre Exce l)

Arriba

responder

Lun, 18/06/2012 14:22

JoseLuis
Casla...

ltima
Offline
accin:
Hace 1 semana
1 da
alta:
11/05/2012
15:15
Puntos: 1195

(En respuesta a ...)

#8

Re: Copiar datos desde un libro a otro sin necesidad de ...


Muchas gracias Enrique, por tu nueva aportacion.
Tnego que decir, que me has acercado al tema de ADO al que una vez me acerque...
y sali "asustado" a la primera dificultad... No consegui ni compilar una macro con
esas instrucciones, porque supongo que hay que disponer de algun complemento
mas...
De todas maneras, te agradez co que estes atento en ayuda del que la solicita...
En mi caso, no me puedo quejar: sois tres buenos amigos, los que habeis
respondido a mi llamada de ayuda.
Estoy peleando con el planteamiento de Paco, porque a pesar de que el
planteamiento de la solucion es claro como el agua cristalina, me estoy liando con
los "pequeos detalles". No controlo cuando esta activo un libro y cuandop esta
activo el otro, porque despues de copiar el bloque desde uno de los ficheros, a la
hora de pegarlo en el otro, me saltan errores por todas partes... Pero quiero seguir
peleando... porque es la unica manera de llegar a aprender. Cada error que soluciono,
una gran satisfaccion que me llevo...
De tu aportacion, amigo Joshua, te dire, que "ya voy entendiendo" un poco mas.
Espero ese fichero de prueba que me anunciabas, para poder ver sobre un supuesto,
el funcionamiento de cada instruccion. La sugerencia me ha parecido muy buena...

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

5/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

para mi, que soy novato: eso de poner un End Sub al final de la linea que se desea y
"ver" lo que ha pasado...
Pasito a pasito... Gracias a los tres.

Arriba

responder

Mar, 19/06/2012 08:56

(En respuesta a ...)

#9

Re: Copiar datos desde un libro a otro sin necesidad de ...

Cron

Bueno, en vez de poner un "end sub", lo que puedes hacer es ejecutar la macro lnea
a lnea con F8. Si lo que quieres ver est muy lejos, con poner delante de donde te
interese un punto de detencin (pinchas a la iz quierda de la expresin y se pone un
punto rojo), ejecutas con F5 y cuando llega al punto se detiene y puedes ver qu ha
ocurrido. Si "sobrevuelas" con el ratn las variables, te aparece el valor que tienen en
ltima
Offline
accin:
Hace 16 horas
cada momento. Y a partir de ah, con F8 vas avanz ando lnea a lnea.
Enestesitioutilizamoscookies(comoen
Noquiero
Acepto
4 mins todaspartes)
Utilizamos
cookies nuestras para el funcionamiento del
alta:
sitio, de Google para mostrarte publicidad, y de AddThis
para mostrar contenido relevante que pueda interesarte.
Haciendo clic en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.

23/06/2010
12:30
Puntos: 6535
Arriba

responder

Mar, 19/06/2012 13:48

JoseLuis
Casla...

(En respuesta a ...)

#10

Re: Copiar datos desde un libro a otro sin necesidad de ...


Hola Cron.
Gracias tambien a ti, por "meter la cuchara".
Sabes? Todo es bueno para el cocido... del aprendiz aje.

ltima
Offline
accin:
Hace 1 semana
1 da
alta:

He "descubierto" sobre todo la ayuda del "punto de detencion" al que he visto que se
llega por distintos caminos, desde pinchar como tu sugieres en tu aporte, hasta ir al
F9 para hacer lo mismo... Evivente... lo de pinchar, (lo pone o lo quita
secuencialmente), mas comodo.

11/05/2012
15:15
Puntos: 1195

La tecla F8 para ir paso a paso, viene a ser otra manera de analiz ar el proceso que
se esta ejecutando en la macro...
Joshua me habia sugerido poner Exit Sub (no End Sub como equivocadamente puse
en mi respuesta anterior), y esta bien conocer diferentes opciones y hacer uso de la
mejor en cada ocasion.
Sobrevolar las variables, esta tambien muy bien. Puede aclarar lo que esta
ocurriendo... porque he visto que se puede sobrevolar una variable colocada mucho
mas adelante en la macro, y se va actualiz ando en cada F8 que le afecta... Otra idea
que va al puchero...
Gracias Cron.

Arriba

responder

Mi, 20/06/2012 00:09

joshua

#11

Re: Copiar datos desde un libro a otro sin necesidad de ...

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

6/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Saludos.
Disculpa la tardanz a, te adjunto el ejemplo que te habia prometido.
ltima
Offline
accin:
Hace 1 ao 11
meses
alta:
10/06/2012
21:49
Puntos: 125

Coloca los dos libros en una misma carpeta, esto es porque estoy haciendo
referencia a la ruta del Libro_destino con la siguiente lnea.
ruta_libro = ActiveWorkbook.Path, pero se pueden colocar en carpetas diferentes
cambiando el ActiveWorkbook.Path por la ruta de la carpeta donde se encontrara el
Libro_origen de esta forma "C:\Users\Usuario\Desktop", bueno la macro la ejecutas
desde el Libro_destino, prubala y comentas, si quieres probarla de lleno en tu
original habra que modificar los rangos de extraccin pero esto es sencillo, si no lo
puedes realiz ar con gusto te lo hago solo necesitara una copia de tu original claro
esta que con datos ficticios pero muy importante con la misma estructura es decir
rallados formatos, etc.

Enestesitioutilizamoscookies(comoen
todaspartes)

Utilizamos Atte.
cookies nuestras para el funcionamiento del

Acepto

Noquiero

sitio, de Google para mostrarte publicidad, y de AddThis


joshua
para mostrar
contenido relevante que pueda interesarte.
Haciendo clic en cualquier enlace de este sitio
entendemos
que nos das permiso para utilizar cookies
Adjunto
contigo.

Tamao

libro_destino.xls (http://www.necesitomas.com/files/libro_destino.xls) 35.5 KB


libro_origen.xls (http://www.necesitomas.com/files/libro_origen.xls)
Arriba

responder

Jue, 21/06/2012 13:30

JoseLuis
Casla...

22.5 KB

(En respuesta a ...)

#12

Re: Copiar datos desde un libro a otro sin necesidad de ...


Hola Joshua:
He visto el funcionamiento de tu macro en estos dos ficheros. Perfecto. Copia los
datos y formatea las celdas con alineacion al centro.

ltima
Offline
accin:
Hace 1 semana
1 da
alta:
11/05/2012
15:15
Puntos: 1195

Lo he aplicado a mis ficheros haciendo las variaciones en el macro, para ajustar a las
columnas y filas que me interesan... y me pierdo...
No acierto a controlar las columnas ni las filas... y en loas datos copiados, sobre
todo, los que contienen fechas o numeros... me hace cosas rarisimas que no
entiendo...
Me gustaria enviarte los ficheros que yo utiliz o, para que veas por donde surgen los
problemas.
El fichero origen tiene datos y tiene las hojas protegidas... Me gustaria enviartelo a tu
direccion de correo si es posible, para darte las claves de acceso y demas...
He visto que ofreces la posibilidad de enviarte un correo, pero no veo la manera de
enviarte los ficheros adjuntos...
Saludos cordiales

Arriba
Vie, 22/06/2012 00:00

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

responder

#13
7/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Re: Copiar datos desde un libro a otro sin necesidad de ...

joshua

Saludos.
Puedes enviarmelos a eliasorozco.serviconta@gmail.com

ltima
Offline
accin:
Hace 1 ao 11
meses
alta:
10/06/2012
21:49
Puntos: 125

Atte.
joshua

Arriba

responder

Lun, 25/06/2012 09:56

(En respuesta a ...)

#14

Re: Copiar datos desde un libro a otro sin necesidad de ...


Enestesitioutilizamoscookies(comoen
JoseLuis

Noquiero
Utilizamos Gracias
cookies nuestras
elenvio
funcionamiento
del
Joshuapara
por el
de los ficheros
adaptados para aplicar tu macro. Funciona
sitio, de Google para mostrarte publicidad, y de AddThis
perfectamente.

Casla...todaspartes)

Acepto

para mostrar contenido relevante que pueda interesarte.


Haciendo clic en cualquier enlace de este sitio
Quedo muy agradecido por la solucion que me has proporcionado, y quiero ponerlos
entendemos que nos das permiso para utilizar cookies
a disposicion de todos, por si alguno mas, puede beneficiarse de ello.
contigo.

ltima
Offline
accin:
Hace 1 semana
1 da
alta:

Los dos ficheros, se explican por si mismos. El libro_origen tiene los datos, y el
libro_destino contiene el macro para recibir los datos.

11/05/2012
15:15
Puntos: 1195

Jose Luis

Saludos cordiales.

Adjunto

Tamao

libro_destino.xls (http://www.necesitomas.com/files/libro_destino_0.xls)

399.5
KB

libro_origen.xls (http://www.necesitomas.com/files/libro_origen_1.xls)

384.5
KB

Arriba

responder

Sb, 08/06/2013 22:33

visitante
(no
verificado)

(En respuesta a ...)

Re: Copiar datos desde un libro a otro sin necesidad de ...


Gracias..son los mejores..un saludo desde Puerto Maldonado,Per...son
extraordinarios....mis respetos

Arriba

responder

Dom, 09/06/2013 15:14

visitante
(no
verificado)

#15

#16

Re: Copiar datos desde un libro a otro sin necesidad de ...


Hola Yo tb necesito algo similar pero con la diferencia elmio debebuscar datos con
un criterio y luego copiar donde corresponda alcriterio buscado.

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

8/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Arriba

responder

Vie, 14/06/2013 03:57

visitante
(no
verificado)

#17

Re: Copiar datos desde un libro a otro sin necesidad de ...


amigos como debera hacer para que solamente copie por ejemplo el rango de la
comuna "A" y pague en el rango de la columna "B" del libro destino?..

Enestesitioutilizamoscookies(comoen
todaspartes)

Arriba

Utilizamos cookies nuestras para el funcionamiento del


sitio, de Google para mostrarte publicidad, y de AddThis
para mostrar contenido relevante que pueda interesarte.
Haciendo clic en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.

Jue, 05/02/2015 03:44

JOHN
ANDRES(no
verificado)

(En respuesta a ...)

Noquiero

responder

#18

AYUDA URGENTE
HOLA TENGO DOS ARCHIVOS DE CALIFICACIONES... TENGO UN TERCERO QUISIERA
QUE LAS NOTAS FINAL DEL PRIMER Y SEGUNDO ARCHIVO KISIERA SE KOPIEN
AUTOMATICO AL TERCERO ME AYUDARIAS EN ESO... NO ENTIENDO MUCHO DE ESTO
SE ME HARIA MAS FACIL CON UN VIDEO O TUTORIAL... GRACIAS DE ANTEMANO

Arriba

responder

Sb, 12/09/2015 17:56

josed(no
verificado)

Acepto

(En respuesta a ...)

#19

filtrar los datos por nombre o por cualquiera


como se filtraria los datos para cojer los datos filtrados y enviarlos para la hoja
destino, tengo otra enquietu si tengo una planilla ya echa y quiero meter los datos q
estoy mando a esa planilla ya echa pero al momento de insertar esos datos sea
mayor, pues q se genere esa nueva columna pero si hay menos q el formato me que
asi intacto, espero q me entiendas.

Arriba

responder

Dom, 20/09/2015 02:48

(En respuesta a ...)

#20

Programacion responder consultas


de...(no
verificado)
Joshu mi nombre es cesar... me gustaria que me apoyaras con muchas consultas en
excel que tengo. como puedo hubicarte para tener tu correo... y poder hacerte las
consultas. te paso mi correo. cesargaitanp@hotmail.com
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

9/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Arriba

responder

Jue, 21/01/2016 14:52

Perezperez
(no
verificado)

(En respuesta a ...)

#21

Copiar el valor de una celda especifica a otro libro


Es una pregunta relacionada.
Tengo 84 archivos excel en una carpeta y necesito extraer la celda G4 de cada uno
de ellos para hacer un nuevo libro que contenga una lista copilando esos datos.

Enestesitioutilizamoscookies(comoen
todaspartes)

Acepto

Noquiero

Utilizamos cookies nuestras para el funcionamiento del


sitio, de Google para mostrarte publicidad, y de AddThis
para mostrar contenido relevante que pueda interesarte.
Arriba Haciendo clic en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.
Lun, 01/02/2016 18:55

jorge(no
verificado)

responder

#22

consulta
al ejecutar esta macro me muestra una mensaje que dice: Este libro contiene uno o
mas vinculos que no se pueden actualiz ar.
para cambiar el origen de los vinculos o intentar de nuevo actualiz ar los valores,
haga click en modificar
para dejar los vinculos tal como estan, haga click en continuar
Y NO QUIERO QUE ME APAREZCA ESTE MENSAJE PORFAVOR, AYUDA! SALUDOS
' CopiarDatos Macro
Workbooks.Open Filename:=ruta_planilla 'Abre archivo planilla diaria TURBOVAPOR
Sheets("Trafos").Select
Range("H9:H39").Select
Selection.Copy
Workbooks(nombre_movcombustible).Sheets(b).Activate
Sheets(b).Select
Range("AP21:AP51").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Arriba

responder

Vie, 08/04/2016 01:43

seba64(no
verificado)

(En respuesta a ...)

#23

Saludos

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

10/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Saludos quisiera saber si alguien tiene los cdigos para abrir libros con el mismo
nombre y para importar datos de un libro sin necesidad de abrirlo. Es que en este
post todos hablan de cosas muy interesantes y cdigos muy alucinantes, pero nadie
dejo una piz ca de cdigo, slo unos enlaces a pginas que ya no existen. Se
agradecer+ia que pusieran esos cdigos en el post, para el registro. Adems de que
no he econtrado otros post en los que se traten estos temas.

Arriba

responder

Vie, 15/04/2016 18:39

Elias(no
verificado)

(En respuesta a ...)

#24

Consulta
comentario movido aqu:

http://www.necesitomas.com/copiardatosotrolibro
Enestesitioutilizamoscookies(comoen
Noquiero
1 (http://www.necesitomas.com/copiardatosotrolibro1)Acepto
todaspartes)
Utilizamos cookies nuestras para el funcionamiento del
sitio, de Google para mostrarte publicidad, y de AddThis
para mostrar contenido relevante que pueda interesarte.
Haciendo clic en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.

Arriba

responder

Jue, 21/04/2016 14:27

CesarBoys
(no
verificado)

(En respuesta a ...)

#25

Encontre esta informacin en


Encontre esta informacin en esta liga
http://www.audeser.com/2012/05/03/intercambiodeinformaci%C3%B3n
conot...(http://www.audeser.com/2012/05/03/intercambiodeinformaci%C3%B3n
conotrosarchivosmedianteado/)

VBA General
Abrir un arc hivo Exc el y leer datos del mismo es relativamente senc illo, pero puede ser ms
interesante realizar el interc ambio de datos sin rec urrir a abrir el programa asoc iado.
Mic rosoft permite realizar este interc ambio mediante varias tec nologas, entre ellas ADO (hay
detrac tores al respec to).

Hac erlo a travs de Exc el no resulta del todo simple, pero mediante estas rutinas pueden
llevarse a c abo las tareas princ ipales:

Option Explicit
Private Sub GetSheetNames2(ByRef szFullName As String, ByRefaszSheetList() As S
tring)
Dim bIsWorksheet As Boolean
Dim objConnection As ADODB.Connection
Dim rsData As ADODB.Recordset
Dim lIndex As Long
Dim szConnect As String
Dim szSheetName As String
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

11/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Erase aszSheetList()

Dim ExcelVersion As Integer


ExcelVersion = VBA.Val(Application.Version)
If ExcelVersion < 12 Then
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &
szFullName & "Extended Properties=Excel 8.0"
Else
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0Data Source=" &
szFullName & "Extended Properties=Excel 8.0"
End If
Set objConnection = New ADODB.Connection
objConnection.Open szConnect
Set rsData = objConnection.OpenSchema(adSchemaTables)
Do While Not rsData.EOF
bIsWorksheet = False
Enestesitioutilizamoscookies(comoen
szSheetName = rsData.fields("TABLE_NAME").Value
Noquiero
Acepto
todaspartes)
If Right$(szSheetName, 1) = "$" Then
Utilizamos cookies nuestras para el funcionamiento del
''' This is a simple sheet name. Remove the trailing "$" and
sitio, de Google para mostrarte publicidad, y de AddThis
continue.
para mostrar
contenido relevante que pueda interesarte.
en
cualquier

szSheetName
= Left$(szSheetName, Len(szSheetName) 1)
Haciendo clic
enlace
de este sitio
entendemosque
para utilizar
cookies
nos
das
permiso
bIsWorksheet
= True
contigo.
ElseIf Right$(szSheetName, 2) = "$'" Then
''' This is a sheet name with spaces and/or special characters.
''' Remove the right "&'" characters.
szSheetName = Left$(szSheetName, Len(szSheetName) 2)
''' Remove the left single quote character.
szSheetName = Right$(szSheetName, Len(szSheetName) 1)
bIsWorksheet = True
End If
If bIsWorksheet Then
''' Embedded single quotes in the sheet name will be doubled up.
''' Replace any doubled single quotes with one single quote.
szSheetName = Replace$(szSheetName, "''", "'")
''' Load the processed sheet name into the array.
ReDim Preserve aszSheetList(0 To lIndex)
aszSheetList(lIndex) = szSheetName
lIndex = lIndex + 1
End If
rsData.MoveNext
Loop
rsData.Close
Set rsData = Nothing
objConnection.Close
Set objConnection = Nothing
End Sub
Public Function GetSheetsNames(strFileName As String) AsCollection
'Needs a reference to:
'Microsoft ActiveX Data Object X.X Library
'Microsoft ADO Ext. X.X for DLL and Security

Dim tbl As ADOX.Table


Dim sSheet As String
Dim Col As New Collection

Dim objConn As ADODB.Connection


Set objConn = New ADODB.Connection
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0" & "" & _
"Data Source=" & strFileName & "" & _
"Extended Properties=Excel 8.0"
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

12/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Dim objCat As ADOX.Catalog


Set objCat = New ADOX.Catalog
Set objCat.ActiveConnection = objConn

For Each tbl In objCat.Tables


sSheet = tbl.Name
sSheet = Application.Substitute(sSheet, "'", "")
sSheet = Left(sSheet, InStr(1, sSheet, "$", 1) 1)
On Error Resume Next
Col.Add sSheet, sSheet
On Error GoTo 0
Next tbl
Set GetSheetsNames = Col
objConn.Close
Set objCat = Nothing
Set objConn = Nothing

Enestesitioutilizamoscookies(comoen
End Function
todaspartes)

Acepto

Noquiero

Utilizamos cookies nuestras para el funcionamiento del


Public Function ReadDataFromWorkbook(ByVal SourceFile AsString, ByVal SourceRan
sitio, de Google para mostrarte publicidad, y de AddThis
ge
As String)
As Variant
para mostrar
contenido
relevante
que pueda interesarte.
'
Requiere
una
referencia
a Microsoft ActiveX Data Objects library (Microsoft
Haciendo clic en cualquier enlace
de este sitio
entendemosActiveX
que nos das
permiso
para
utilizar
cookies
Data
Objects
x.x
Object
Library)
contigo.
' Si SourceRange es una referencia a un rango, la funcin slo devuelve datos

de la primera hoja en SourceFile


' Si SourceRange es un nombre de referencia la funcin puede devolver datos de
cualquier hoja en SourceFile
' SourceRange must include the range headers
' examples:
' varRecordSetData = ReadDataFromWorkbook("C:\FolderName\SourceWbName.xls",
"A1:A21")
' varRecordSetData = ReadDataFromWorkbook("C:\FolderName\SourceWbName.xls",
"A1:B21")
' varRecordSetData = ReadDataFromWorkbook("C:\FolderName\SourceWbName.xls",
"DefinedRangeName")
Dim dbConnection As ADODB.Connection, rs AsADODB.Recordset
Dim dbConnectionString As String

Set dbConnection = New ADODB.Connection


On Error GoTo InvalidInput
'dbConnectionString = "DRIVER={Microsoft Excel Driver
(*.xls)}ReadOnly=1DBQ=" & SourceFile
'dbConnection.Open dbConnectionString ' Abre una conexin a la base de
datos

With dbConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & SourceFile & "" & _
"Extended Properties=Excel 8.0"
.Open
End With

Set rs = dbConnection.Execute("[" & SourceRange & "]")


On Error GoTo 0
ReadDataFromWorkbook = rs.GetRows ' Devuelve una matriz de dos dimensiones
con todos los campos del RecordSet
rs.Close
dbConnection.Close ' Cierra la conexin a la base de datos
Set rs = Nothing
Set dbConnection = Nothing
On Error GoTo 0
Exit Function
InvalidInput:
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

13/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

MsgBox "The source file or source range is invalid!", vbExclamation, "Get


data from closed workbook"
Set rs = Nothing
Set dbConnection = Nothing
End Function
Sub Test()
Dim Col As Collection
Dim lgHoja As Long
Dim strRuta_y_NombreArchivo As String
Call fAbrirArchivo(strRuta_y_NombreArchivo)

Set Col = GetSheetsNames(strRuta_y_NombreArchivo)


For lgHoja = 1 To Col.Count
MsgBox Col(lgHoja)
Next lgHoja
End Sub

Enestesitioutilizamoscookies(comoen
todaspartes)

Acepto

Noquiero

Utilizamos cookies nuestras para el funcionamiento del


Sub TestReadDataFromWorkbook()
sitio, de Google para mostrarte publicidad, y de AddThis
'contenido
Lee datos
de un Libro
cerrado
para mostrar
relevante
que pueda
interesarte.

Dim
strRuta_y_NombreArchivo
As String
Haciendo clic en cualquier enlace de este sitio
entendemosque
das
permiso para utilizar cookies
nos
Call
fAbrirArchivo(strRuta_y_NombreArchivo)
contigo.

Dim matrizTemporal As Variant, lgFila As Long, lgColumnaAs Long


matrizTemporal = ReadDataFromWorkbook(strRuta_y_NombreArchivo, "A1:B21")
' Sin transposicin de datos
' For lgFila = LBound(matrizTemporal, 2) To UBound(matrizTemporal, 2)
' For lgColumna = LBound(matrizTemporal, 1) To UBound(matrizTemporal,
1)
' ActiveCell.Offset(lgFila, lgColumna).Formula =
matrizTemporal(lgColumna, lgFila)
' Next lgColumna
' Next lgFila
' Con transposicin de datos
matrizTemporal = Application.WorksheetFunction.Transpose(matrizTemporal)
For lgFila = LBound(matrizTemporal, 1) ToUBound(matrizTemporal, 1)
For lgColumna = LBound(matrizTemporal, 2) ToUBound(matrizTemporal, 2)
ActiveCell.Offset(lgFila 1, lgColumna 1).Formula =
matrizTemporal(lgFila, lgColumna)
Next lgColumna
Next lgFila
End Sub

Arriba

responder

Vie, 12/08/2016 23:29

(En respuesta a ...)

#26

Macro perfecta
http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

14/15

28/8/2016

Copiardatosdesdeunlibroaotrosinnecesidaddeabrirlosdos.| necesitomas.com

Steven(no
verificado)

Hola Joshua estuve viendo tu macro y es exactamente lo que necesito, solo necesito
hacerle unos cambios ya que necesito hacerlo con varios files, si me pudieras ayudar
te lo agradeceria demasiado, mi correo es lcruz10@hotmail.com

Arriba

responder

Re sponde r

Si copias, al menos enlaza (http://www.necesitomas.com) | El contenido original de esta web est bajo
una licencia de Creative Commons (http://creativecommons.org/licenses/bysa/2.5/es/).
proteccin de datos personales (http://www.necesitomas.com/datos) | normas de participacin en el
Enestesitioutilizamoscookies(comoen
Noquiero
foro(http://www.necesitomas.com/normasforo) | informacin sobre
de
Aceptomedios
todaspartes)
Utilizamos cookies nuestras
para
el funcionamiento del
pago
(http://www.necesitomas.com/pago)
sitio,
de Google
para
mostrarte publicidad, y de AddThis
Cursos
Excel
Madrid
(http://www.necesitomas.com/formacionexcelnecesitomas)
| Cursos Excel
para mostrar contenido relevante que pueda interesarte.
Barcelona (http://donexcel.com/)
Haciendo clic en cualquier enlace de este sitio
entendemos que nos das permiso para utilizar cookies
contigo.

El gur del deporte. Curiosidades, estadsticas y rcords desde otro punto de


vista (http://elgurudeldeporte.com/)

Sitio hecho con Drupal

http://www.necesitomas.com/copiardatoslibrootronecesidadabrirdos

15/15

Vous aimerez peut-être aussi