You are on page 1of 5

Distribuir datos en hojas Excel con macros.

~ JLD Excel en Castellano - Usar Microsoft Excel eficientemente

JLD EXCel
Inicio

eN

Sugerencias y ayuda para Excel en espaol. Ejemplos de funciones y frmulas, grficos y automatizacin de hojas de clculo con Vba.

CASTellANO - USAR MICROSOFT EXCel


Ayuda Hojas Excel Consultora Microsoft Excel

eFICIeNTemeNTe

Acerca de JLD Excel


Anuncios Google

Apoyar JLD Excel MS Excel macro VBA in Excel

TRADUCIR ESTA PGINA


Autofiltro BUSCARV Calendario COINCIDIR Comparar Listas Consolidar Datos CONTAR.SI Controles Dashboards DESREF Eventos Excel 2007 Excel 2010 Excel 2013 Fechas y hora Formato

BUSCAR EN EL BLOG
Buscar

Condicional

Funciones y Formulas

Gantt

Hipervnculos Importar Datos INDICE SUMAPRODUCTO

MS Query Muestra aleatoria Objetos Pareto PDF Quitar duplicados rangos dinmicos Registros unicos SIFECHA SUBTOTALES

Listas Desplegables

Macros

Graficos

Guias

Excel

JLD
Bsqueda personalizada

Tablas Dinamicas Tablas/Listas Tips Validacion de Datos Varios

Entre su e-mail para suscribirse:

Distribuir datos en hojas Excel con macros.


SBADO, ENERO 19, 2008
Suscribirse

Delivered by FeedBurner En la nota anterior sobre cmo distribuir datos de una hoja a otras hojas de un cuaderno Excel, vimos como hacerlo con frmulas. En esa nota sealaba que el mtodo con frmulas es til slo si nuestro cuaderno contiene pocos datos. Uno de mis lectores intent usar la solucin con frmulas pero, en sus porpias palabras "no he podido concluir mi base de datos porque la cantidad de data es mucha y con el peso de las formulas todas las maquinas se cuelgan" . Este mismo lector me peda que le enseara la forma de hacerlo con macros. En esta nota mostrar una solucin posible con macros al mismo caso que mostrbamos en la nota anterior. Debo aclarar que esta solucin no es ptima desde el punto de vista de programacin, sino que est orientada al usuario promedio cuyo objetivo es crear herramientas para el trabajo diario y no desarrollo de implementaciones en Excel. El ejemplo se basa en el mismo archivo de la nota anterior. El archivo con las macros puede descargarse "> aqu. Suscribirse a un lector de feeds

PUBLICIDAD

Empezamos por agregar el encabezamiento "Transferido".

ARCHIVO DEL BLOG


Archivo deldel Blog Blog Archivo

RECOMENDADO S
Economa Excel - en Castellano Soluciones para hojas Excel Contextures Esta columna nos servir para chequear si la lnea de la hoja Datos ha sido transferida o no. En esta solucin usaremos dos macros. Una de tipo evento y otra que har el trabajo de copiar los datos a la hoja correspondiente. La idea es que, una vez agregados los datos en la hoja "Datos", haciendo doble-clic en la celda correspondiente de la columna E, los datos sean transferidos a la hoja adecuada. Adems queremos evitar que por error los datos sean transferidos ms de una vez. Para eso usaremos el mecanismo de poner, automticamente, la palabra "SI" en la columna Transferido, despus de haber copiado los datos. Una vez que aparece la palabra SI en la columna E de la lnea, la macro no permitir volver a copiarlos.
Computers Blogs

Chip Pearson Decision Models

http://jldexcelsp.blogspot.mx/2008/01/distribuir-datos-en-hojas-excel-con.html[06/06/2013 11:25:41 p.m.]

Distribuir datos en hojas Excel con macros. ~ JLD Excel en Castellano - Usar Microsoft Excel eficientemente

Para disparar la macro que copie los datos, usaremos el evento BeforeDoubleClick de la hoja "Datos". Empezamos por abrir el editor de Vba y haciendo doble-clic en el icono de la hoja Datos, abrimos el mdulo de Vb para el evento

ESTADSTICAS

En el mdulo del evento ponemos este cdigo

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rngAnotar As Range, Resp, Fila Set rngAnotar = [E:E] If IsEmpty(Target) = False Then MsgBox "La lnea ya fue transferida" Exit Sub End If If Union(Target, rngAnotar).Address = rngAnotar.Address Then Resp = MsgBox(prompt:="Transferir datos?", Buttons:=vbYesNo, _ Title:="Transferir Datos") If Resp = vbNo Then Cancel = True Exit Sub End If Fila = Target.Row Call dist_hojas Target.Value = "SI" End If End Sub

Despus de declara las variables y definir el rango E, empezamos por comprobar si la lnea a sido transferida en el pasado. Si la palabra SI aparece en la celda correspondiente de la lnea que queremos copiar, aparece un mensaje informndonos que ya hemos transferido los datos y la macro se interrumpe. El resto del cdigo produce un mensaje preguntndonos si queremos copiar los datos. Slo si apretamos NO, la macro se interrumpe y no habr ningn cambio en el cuaderno.

Si aceptamos, los datos sern copiados y en la celda de la columna E aparecer la palabra SI

http://jldexcelsp.blogspot.mx/2008/01/distribuir-datos-en-hojas-excel-con.html[06/06/2013 11:25:41 p.m.]

Distribuir datos en hojas Excel con macros. ~ JLD Excel en Castellano - Usar Microsoft Excel eficientemente

Si intentamos volver a copiar los datos de la lnea, aparece este mensaje

El trabajo de copiar a la hoja correspondiente lo hace esta macro, que ponemos en un mdulo corriente (Mdulo1)

Sub dist_hojas() Dim LastRow As Long, Hoja As String Dim rngCopiar As Range Hoja = "Ruta " & ActiveCell.Offset(0, -1).Value 'definir nombre de hoja Set rngCopiar = Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 3)) Application.ScreenUpdating = False With Sheets(Hoja) .Activate LastRow = WorksheetFunction.CountA([A:A]) + 1 End With rngCopiar.Copy Sheets(Hoja).Cells(LastRow, 1) Sheets("Datos").Select Application.ScreenUpdating = True End Sub

Despus de definir las variable, la primer lnea del cdigo "arma" el nombre de la hoja uniendo a la palabra "Ruta" el nmero que aparece en la columna D, con el operador "&". La lnea siguiente determina cul es el rango a copiar en "Datos". El paso siguiente es determinar cul es la primer fila libre en la hoja en la que vamos a pegar los datos. Una vez hecho esto, volvemos a "Datos", copiamos el rango adecuado y lo pegamos en la hoja correspondiente. En este modelo no hemos puesto ningn mtodo automtico para borrar lpineas que han sido copiadas y cancelar la seal SI en la hoja Datos. Esto se deber hacer manualmente.

http://jldexcelsp.blogspot.mx/2008/01/distribuir-datos-en-hojas-excel-con.html[06/06/2013 11:25:41 p.m.]

Distribuir datos en hojas Excel con macros. ~ JLD Excel en Castellano - Usar Microsoft Excel eficientemente
Technorati Tags: MS Excel

Posted by Jorge Dunkelman at 9:28 p.m. Labels: Macros

6 comments:
Eduardo, 23 enero, 2008 20:11 Jorge: me parece excelente el blog, lejos el mejor que he encontrado en la red. Estoy recien empezando con esto de las macros y tengo una consulta. Mi idea es copiar una lista de datos de una hoja con un boton (llamado Generar Archivo) y que abra una nuevo libro con los datos copiados. Te lo pregunto porque debe ser muy parecido a lo que realizaste en esta entrada. De antemando gracias adios!!

Jorge L. Dunkelman, 24 enero, 2008 17:39 Hola Eduardo, te sugiero que abras el grabador de macros y realices la tarea. Cuando termins, abrs el editor de Vb donde pods ver la rutina creada. Esta rutina es poco eficiente y adems no es flexible, ya que al correrla nuevamente, vuelve a repetir exactamente los pasos de la grabacin. Pero pods ver los objetos y los mtodos empleados y adaptar el cdigo a tus necesidades. Tal vez ms adelante publique una nota sobre el tema.

Annimo, 15 diciembre, 2008 20:29 Hola Jorge: Qu modificacin se podra hacer en la macro para distribuir todos los datos de una sola vez en lugar de ir uno a uno? Gracias, Sergio

Jorge L. Dunkelman, 15 diciembre, 2008 23:16 En lugar de usar un evento, tendras que crear una ,acro que copie los datos. Podras ligar la macro a un botn para activarla.

Annimo, 14 septiembre, 2009 16:04 Hola Jorge, muy bueno el blog, necesito saber que modificacion podria hacerle a la macro para que reconozca si existe un valor en la fila anterior y que se pegue por debajo de esta.gracias

Jorge L. Dunkelman, 14 septiembre, 2009 17:57 Hola entiendo que quers transferir varias lneas de una vez. Para eso tens que crear un loop (bucle) usando Do...Loop o For...Next. Como en la macro de esta nota, empezs por ubicar la primer lnea libre (LastRow) y a partir de ah vas incrementando el valor de la variable cada vez que copias una lnea. Espero haberme explicado.

Publicar un comentario

http://jldexcelsp.blogspot.mx/2008/01/distribuir-datos-en-hojas-excel-con.html[06/06/2013 11:25:41 p.m.]

Distribuir datos en hojas Excel con macros. ~ JLD Excel en Castellano - Usar Microsoft Excel eficientemente

Links to this post


Crear un vnculo

Publicar un comentario

Seleccionar perfil... Comentar como: Seleccionar perfil...


Publicar Vista previa

Entrada ms reciente Suscribirse a: Comentarios de la entrada (Atom)

Pgina Principal

Entrada antigua

SEGUIDORES

GOOGLE+ FOLLOWERS

APOYAR JLD EXCEL

Trminos Legales
JLD Excel en Castellano by Jorge Dunkelman is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 Espaa License.
Blogger template On The Road by Ourblogtemplates.com 2009 Back to TOP

http://jldexcelsp.blogspot.mx/2008/01/distribuir-datos-en-hojas-excel-con.html[06/06/2013 11:25:41 p.m.]

You might also like