Ir al contenido principal

postea tus dudas y consultas

este espacio es para darle un "toque foro" al blog.
existirán muchos temas que seguramente se me escapen y, por ende, no postee al respecto, por omisión, olvido, desconocimiento, etc, etc. si esto sucediera (seguro que así será), dejo este espacio para que cada visitante pueda subir su duda o consulta sobre tópicos no tratados en mis post.

Comentarios

  1. Hola Damian
    Soy Mònica, estuve chequeando la macro que me enviaste y tengo un pequeño problema y es que solo toma en cuenta el valor del primer nombre que encuentra, es decir si yo busco "Monica" y en el archivo dice "Monica", "Monica RAmirez", "Agustin Monica", solo toma el primer Monica y yo necesito que sume todos, espero me entiendas
    Muy buena la pagina de lo que he visto y revisado
    Ahhhhhhhhhhhhh y no se si me puedas indicar este detalle pero yo tengo el windows XP y cuando abro Excel a veces veo la lista de Macros y otras veces no, lo que yo hago es simplemente cerrar todas las ventanas y volver abrir Excel, no se si me puedas dar una mano con eso tambien

    Saludos

    ResponderEliminar
  2. hola mónica:
    revisé el archivo y pude detectar el error, así que lo corregí y envié a tu correo. revisé los primeros regisros y la suma de los mismos es correcta.
    en cuanto a la consulta de tu post:
    1) tenés XP como sistema operativo, pero dame la versión de Excel (93, XP, 2007)
    2) Donde guardas tus macros? Por que el problema puede venir al guardarlas en el libro "personal.xls" (recordá que ese libro está siempre oculto).
    Otra puede ser que desde el formulario de macros (herramientas/macros/macros) tengas que revisar las opciones que tenes por defecto. Fijate cual de estas tenés seleccionadas:
    -todos los libros abiertos
    -este libro

    suerte y avisame

    ResponderEliminar
  3. te paso el link con el post que levanté.
    http://damianexcel.blogspot.com/2010/03/macros-consolidar-datos-sin-utilizar.html

    ResponderEliminar
  4. Que tal Damian, gracias por la macro me sirvio de mucho tu ayuda, ahora sobre lo otro, yo grabo mis macros en Personal.xls y tengo Windows XP con el office 2007, verifico en todos los libros abiertos, este libro y las opciones y no se asoma, asi que yo lo que hago es cerrar excel y volverlo abrir, no se si tenga algo que ver que trabajo en una red, pero no entiendo porque es como que se "desaparece" el archivo y luego se "asoma"

    ResponderEliminar
  5. bueno, que alegria saber que el ejemplo te sirvio y podes utilizarlo en tu proyecto.
    te comento que levante un post con tu duda, obviamente con los datos cambiados... no son los originales que vos me pasaste, para no mostrar esa info.
    probablemente la red se un problema, ya que el libro personal.xls se guarda en una ruta especifica (creo que en el 2007 es C:\Users\TU USUARIO\Datos de Programa\Microsoft\Excel\XlStart). Abria que ver si esa ruta en tu caso esta en una unidad de red y presenta inconvenientes al refrescar los datos.
    Si bien no te muestra las macros en ese formulario, decime si ingresando a VBA las podes observar desde el explorador de proyectos, en el nodo correspondiente a Personal.xls
    suerte y quedo al aguardo de tus noticias.
    gracias x avisar el resultado de la macro.

    ResponderEliminar
  6. Que tal, efectivamente a veces no los veo si recurro desde Excel para abrir mi macro, pero si abro desde el Explorador encuentro mi Personal.xls y no tengo problema.En otras ocasiones lo que hago es abrir y cerrar el Excel hasta que se asoma la lista de macros, lo cual es un gran inconveniente teniendo en cuenta que toca cerrar todos los archivos y luego volver a abrirlos. No se si tenga que borrar algun archivo en otro lado o el Excel se aloca.
    Estoy chequeando tu pagina y la encuentro muy atractiva y si lei tu post de mi consulta, espero tu gentil ayuda

    ResponderEliminar
  7. hagamos una cosa: abrí los libros de excel hasta que tengas las macros de "Personal.xls" visualizadas. luego ejecutá este código:
    Sub Test()
    MsgBox Workbooks("Personal.xls").Path
    End Sub
    y decime que ruta te devuelve. para que funcione, "personal.xls" debe estar abierto. vamos a tener que ir viendo este tema por partes.
    cuando me refiero al "explorador" lo hago al "explorador de proyectos" de vba. ¿ahí visualizás el libro?
    muchas gracias por tu consulta al foro.

    ResponderEliminar
  8. hola damianexcel:
    trabajo con la versión 97' de excel y necesito colocar el simbolo del euro en los numeros.
    gracias por tu ayuda.

    ResponderEliminar
  9. hola: levanté una entrada con la respuesta a tu consulta, dado que me pareció oportuno escribir sobre el tema y, a la vez, ampliar un poco mas el tema. te dejo el link: http://damianexcel.blogspot.com/2010/03/formato-insertar-simbolos-especiales-en.html
    avisame que tal te fue.

    ResponderEliminar
  10. estimado johan: te respondí a tu correo personal, dado que (me parece) incluiste información personal en la entrada del blog, la cual por las dudas, no autoricé, ya que estimo un riesgo publicar esa info en este blog.
    avisame como salió y hago una entrada sobre el tema, incluyendo tu aporte y mi solución.
    un abrazo y gracias x escribir.

    ResponderEliminar
  11. aqui te dejo un post levantado con el código vba para enviar mails desde excel, con archivo adjunto incluído:
    http://damianexcel.blogspot.com/2010/03/macros-como-enviar-mails-desde-excel.html

    ResponderEliminar
  12. Hola mi estimado
    Es johan Moreno
    Como esta todo hago una consulta sobre el codigo que incluiste para ayudarme, con el cual enviamos desde excel con gmail, unas hojas especificas de un archivo, el archivo crea en memoria un arhivo con las hojas.

    Mi duda es la siguiente cuando abrimos ese archivo que crea la macro y adjunta en el correo, me el error de actualizacion pues la hojas poseen formulas como haria para evitar que esa informacion sea copiada como valores(y los formatos de la hoja) y no formulas que me obligan a vincular los archivos..

    Muchas Gracias amigo mio...

    ResponderEliminar
  13. hola johan: para recurrir a una solución práctica, sencilla y que evitará del todo que se pegen las funciones en las hojas del libro que adjuntarás, te propongo lo siguiente:
    ** luego de llevar cada hoja,en el ejemplo eran 2, al nuevo libro, insertá este código:
    Cells.Copy
    Cells.PasteSpecial xlPasteValues
    Cells.PasteSpecial xlPasteFormats
    Application.CutCopyMode = False

    que hace: primero copias la hoja original al nuevo libro, con el código que ya tenés. este que te agrego copia todas las celdas de la nueva hoja, luego pega solamente los valores y luego los formatos.
    de esta forma evitamos que se peguen las funciones.
    avisame si te funcionó correctamente

    ResponderEliminar
  14. Hola Amigo como esta todo...
    Recurro a tu valiosa ayuda nuevamente tengo una duda.

    Poseeo un archivo llamado edo gyplvs 2010-2011, en este archivo tengo un codigo que abre un archivo llamado mes desde donde copio los datos le asigno un formato y lo copio en la hoja mes del archivo edo gyplvs 2010-2011.

    Columns("C:C").Select
    'Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Selection.Replace What:=",", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Range("B5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A5:B5").Select
    Selection.NumberFormat = "000"
    Range("A5").Select
    Cells.Replace What:="*Hasta ", Replacement:="", _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
    False, ReplaceFormat:=False
    Range("A5").Select
    Selection.NumberFormat = "000"

    Selection.NumberFormat = "000"
    'Selection.Replace What:=",", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    With Selection
    .HorizontalAlignment = xlRight
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    Sheets("G y P").Select

    Todo bien hasta aqui..
    Adicionalmente en ek archivo edo gyplvs tengo 12 hojas con los meses dela año, como haria para con el codigo, poder seleccionar la hoja del mes donde deseo copiar la informacion

    ResponderEliminar
  15. no comprendo muy bien tu pregunta.
    en la última línea de código que me pasas tenes la instrución "Sheets("G y P").Select", con la cual le ordenás que selecciones la hoja "G y P"
    Para ir, por ejemplo, a la hoja "Enero" la instrucción sería Sheets("Enero").Select, y así con cualquier mes.
    otra posibilidad sería llamar a un formulario que cargue todos los meses en una lista desplegable y que al seleccionar un mes te lleve a esa hoja:
    1) en el módulo de VBA insertá un formulario.
    2) Agregá en el mismo un ComboBox
    3) Hacé doble click sobre el ComboBox. Te aparecerá el evento "Change". Ahí escribís lo siguiente:
    Private Sub ComboBox1_Change()
    If ComboBox1.Text <> "" Then
    On Error Resume Next
    Sheets(ComboBox1.Text).Select
    Unload Me
    If Err.Number <> 0 Then
    MsgBox "Error en la seleccion de hoja", vbCritical
    Err.Clear
    End If
    End If
    End Sub
    este Sub te garantiza que cada vez que registre un cambio (o sea que selecciones un mes) te lleve a esa hoja.

    4) Ahora seleccionas el evento Initialize el formulario. Vamos a aprovecharlo para cargar en el combobox todos los meses:
    Private Sub UserForm_Initialize()
    With ComboBox1
    .AddItem "enero"
    .AddItem "febrero"
    .AddItem "marzo"
    .AddItem "abril"
    .AddItem "mayo"
    .AddItem "junio"
    .AddItem "julio"
    .AddItem "agosto"
    .AddItem "septiembre"
    .AddItem "octubre"
    .AddItem "noviembre"
    .AddItem "diciembre"
    End With
    End Sub

    antes de que comience el código que me pasaste, o donde vos lo necesites, copias esto:
    UserForm1.Show
    así llamás al formulario y te permite seleccionar el mes.

    te dejo el archivo que hice con tu consulta, para que analices el código "en vivo":
    https://sites.google.com/site/damianomarsilva2/ir_a_hoja.xls

    cualquier duda me avisas.
    un abrazo

    ResponderEliminar
  16. damianexcel: necesito contar la cantidad de palabras que existen dentro de una frase que esta metida dentro de una celda.
    gracias

    ResponderEliminar
  17. hernancho: te dejo el link con la respuesta. cualquier duda me avisas.
    http://damianexcel.blogspot.com/2010/07/contar-la-cantidad-de-palabras-dentro.html

    ResponderEliminar
  18. me indicas como logro generar 5 numeros aleatorios entre 1 y 50 pero que no se repitan???
    por favor lo necesito urgente para un sorteo.
    saludos desde san martin de los andes, argentina.

    ResponderEliminar
  19. cesar: te paso el link a la entrada que levanté, con una de las posibles soluciones a tu consulta.
    http://damianexcel.blogspot.com/2010/07/generar-numeros-aleatorios-no-repetidos.html

    ResponderEliminar
  20. jajajaja muchas gracias por tremenda respuesta!!!! es justo lo que estaba necesitando y enseguida lo usé para mi rifa.
    alto blog el tuyo, lo voy a revisar mas asi aprovecho todos los ejemplos aunque leyendo vi cosas que no sabian que existian o se podian hacer. muchas gracias por ayudarnos con tus grandes conocimientos de excel.
    si tanto te gusta san martin de los andes te espero con unas birras, para festejar tu invalorable ayuda y brindar por las macros de excel. abrazo

    ResponderEliminar
  21. gracias x tus comentarios, son un gran aliento para seguir con esta tarea del blog.
    y te tomo la palabra con el tema de las birras. jeje

    ResponderEliminar
  22. Hola, como puedo detectar cuando cambio de celdas en una hoja, no solo el cambio de datos en la celda quiero detectar en que fila se encuentra para poder seleccionar la fila completa

    ResponderEliminar
  23. estimado lector Anonimo: te dejo el link a una de las soluciones posibles a tu planteamiento.
    Avisame si te fué de utilidad.
    http://damianexcel.blogspot.com/2010/07/detectar-cambios-realizados-en-una.html

    ResponderEliminar
  24. Hola Damian...Primero te felicito enormemente por tu blog, y por compartir tu conocimiento, verdaderamente me has ayudado mucho con las soluciones que propones a los temas que te plantean!!!!
    Agradezco tu atención a esta consulta
    Mediante alguna función ó macro, es posible identificar caracteres especiales?? Ejm.: ♠╚§Ø◄«¥©... entre otros, y poder extraerlos ó reeemplazarlos de una cadena de texto.
    Así por ejemplo:

    GEL DE BA¾O Y DUCHA VOYAG ------------------- Lo correcto debería ser GEL DE BAÑO Y DUCHA VOYAG

    Éxitos.

    ResponderEliminar
  25. estimado lector: desde ya muchas gracias por tus palabras hacia mi trabajo, son muy reconfortantes.
    en cuanto al problema que me planteas, te dejo un link que levanté al respecto:
    http://damianexcel.blogspot.com/2010/09/reemplazo-de-caracteres-dentro-de-una.html

    como siempre, existe mas de una solución. avisame si todo salió bien o necesitas alguna modificación en el código.

    suerte

    ResponderEliminar
  26. me dirias como hago para cerrar todos los libros abiertos que existan de excel exepto el mio?

    ResponderEliminar
  27. Cordial saludo Damian, soy nuevo en la parte de programación en visual básic y pues me siento muy contento por aprender de dicho programa, y pues buscanco y buscando en tantas páginas por mis dudas que tengo no he logrado encontrar ninguna aclaración, aunque suene un poco tonto para algunos o algo fácil para otros quisiera preguntar como creo botones de navegación que digan, atras, adelante, inicio, pero eso sí no que pase hoja por hoja de excel sino por celda ya que estoy realizando un programa para bases de datos sencilla, para cuando le des siguiente baje a otra celda y muestre la información requerida, por decir estamos situados en la celda A1 donde están los nombres de cada equipo, y cuando le dé siguiente vaya a la casilla A2 y así seguidamente.

    Le agradesco de antemano que me pudieras aclarar ésta duda y pues perdona por molestar con algo tan fácil para uds, dejo mi correo electrónico por si tienes respuesta, gracias

    Victorinotomasi@gmail.com

    ResponderEliminar
  28. Victor: gracias x tu mensaje. Y realmente no hay cosas "difíciles" o "fáciles", simplemente están aquellas que sabemos o no realizar.
    Existen varias formas de solucionar tu planteamiento, voy con una (copia y pega el siguiente codigo en un modulo de VBA:
    Dim Fila As Long
    Const Primera As Byte = 2
    Sub Bajar()
    'le sumo uno a la variable Fila
    Fila = Fila + 1
    'si llego al final de los datos pongo este If para
    'evitar un error:
    If Fila = 65536 Then Fila = Fila - 1
    'y selecciono dicha celda
    Cells(Fila, 1).Select
    End Sub

    Sub Subir()
    'resto uno la valor de Fila
    Fila = Fila - 1
    'si llego al encabezado de la tabla pongo
    'a la variable en 2, para que no lea la cabecera
    If Fila = 1 Then Fila = 2
    Cells(Fila, 1).Select

    End Sub
    Sub Inicio()
    'la constante Primera está con un valor de 2, así que
    'cuando la utilizo selecciono la segunda fila
    '(hago esto para omitir los encabezados)
    Cells(Primera, 1).Select
    End Sub

    si quisieras agregar algún cuadro para ir hasta una fila determinada (por ejemplo la fila 1000 y así omitir presionar 1000 veces el boton):
    Sub IrAUnaFila()
    Dim XXX
    'pido al usuario la fila
    XXX = InputBox("Ingrese el nro de fila", "Ir a una fila")
    'aqui controlo que el dato exista y sea numérico
    If Trim(XXX) = "" Then
    Exit Sub
    ElseIf Not IsNumeric(XXX) Then
    Exit Sub
    Else
    'paso el valor a la variable principal
    Fila = CLng(XXX)
    'y selecciono la celda
    Cells(Fila, 1).Select
    End If
    End Sub


    fijate si de esa forma te sirve y me avisás.

    ResponderEliminar
  29. Hola, me gusto mucho tu web, me fue de mucha ayuda.
    Te hago una consulta; tengo que calcluar las horas diarias, semanales y mensuales de mi personal. Pero en la ultima celda que hice semanal, solo me calcula la suma hasta 23 hs, y de ahi empieza en conteo de nuevo...como reloj pero yo quiero saber si llegan o no a hacer las 48 hs semanales...espero me puedas ayudar.
    Lo que hago es muy parecido a un ejemplo tuyo de como calcular las horas de un empleado pero me falta este detalle de las hs semanales.
    Gracias¡¡¡¡¡¡¡

    ResponderEliminar
  30. Hola y muchas gracias x tus palabras.
    te comento: si estás utilizando una suma común de horas creo que la solución pasa por el formato.
    te posicionas sobre el total, vas a formato/celda (ctrol + 1), en las pestaña "numero" seleccionás la opción "personalizada" y ponés el siguiente valor:
    [h]:mm:ss
    es decir: una sola "h" para la hora y que la misma se encuentre encerrada entre corchetes.
    ahora deberías visualizar el total de horas que estés sumando correctamente.
    avisame como te fué.

    ResponderEliminar
  31. hola en mi caso por ejemplo me llegan lista de excel de proveedores en las cuales no trabajo todos los articulos se podrian colorear ciertas filas y luego cuando llega otra lista pegarla sobre esa y que queden coloreadas esos mismos productos para saber si sufrieron aumentos y no tener que revisar todos los articulos o si de que alguna forma me marque los aumentos que sean mayor no se por ejemplo a $0,01

    ResponderEliminar
  32. enviame el archivo a la dirección de correo que figura al pié del formulario, así veo bien el ejemplo y te levanto un post para solucionar lo que planteas.
    estimo que con la función BUSCARV() y alguna otra mas se podría hacer lo que solicitás, pero necesito ver el formato de los datos, si es posible.

    ResponderEliminar
  33. te dejo el link al post que levanté con tus listas de precios:
    http://damianexcel.blogspot.com/2010/12/comparar-listas-de-datos-en-excel.html

    ResponderEliminar
  34. hola de nuevo damian.
    necesito llevar una agenda con las deudas de los habitantes de un edificio. les realizo distintos trabajos de mantenimiento y estoy cansado del papel y lapiz y quiero algo mas moderno y rapido. quisiera que me ayudes no tengo los recursos para pedirle a programador que me lo haga y los programas que encontre con muy complicados. gracias. ¿se puede hacer en excel?

    ResponderEliminar
  35. hola @dicto, un gusto tener noticias tuyas de nuevo. jaja, muy bueno el nick, con ese arroba al principio.
    armo algo y levanto un post al respecto. ese tema requiere organizar un poco las cosas, ya que estamos frente a un pequeño proyecto, no es un ejemplo sobre algún planteamiento en particular.
    dame un tiempo y te lo tengo listo.

    ResponderEliminar
  36. Hola Damián, te escribo porque tengo 2 proveedores que me envían una lista de sus productos en libros de excel. Algunos de sus productos coinciden y otros son exclusivos de uno u otro proveedor.Lo que esos libros de excel incluyen es: Nombre del producto y valor. El problema es que cada proveedor asigna distionto nombre a un mismo producto (asignan la misma marca, por ejemplo, pero uno agrega más características que el otro (uno agrega el contenido en mililitros aparte del nombre). Entonces no sé si hay alguna macro o algo que se pueda crear para que mismo excel me "sugiera" que se trata del mismo producto y de este modo poder comparar automáticamente los precios entre esos 2 distribuidores. Lo veo muy complicado, pero por lo mismo supongo debe haber alguna manera, ya que los listados son de unos 3000 productos cada uno. Muchas gracias!

    ResponderEliminar
  37. hola Fabrizio, por favor disculpame la demora, pero me trasladaron del trabajo (estoy en una ciudad nueva) y es la primera vez que accedo al blog en casi un mes.
    deberías pasarme el archivo, aunque sea con unos pocos ejemplos, así veo el grado de complejidad y diferencia entre ambas listas.
    envialo a damianexcel@gmail.com y vemos como resolvemos tu problema

    ResponderEliminar
  38. Hola Damian , como puede hacer para tener un contador en una hoja de excel , te comento rapidamente la situacion, en una base de captura necesito asignar folio a unos registros de manera automatica , la base se va llenando conforme a llamadas telefonicas y el folio deberia cambiar conforme a una nueva llamada y en base a la fecha (dia y mes) no he podido encontrar una solucion para tener un contador automatico. Espero me puedas ayudar

    Saludos
    Omar Maldonado

    ResponderEliminar
  39. omar: te dejé una entrada en tu facebook. quedo al aguardo de los ejemplos.
    un abrazo

    ResponderEliminar
  40. sucursal dólar ($) libra(₤) euros (€) total
    madrid 4000 5000 7000
    paris 8000 7000 8000
    londres 10000 13000 4000
    roma 7000 6000 7000
    new york1 8000 12000 10000


    cotizaciones
    moneda dólar libra
    valor en € 0,89 € 1,57 €

    es que formula se utiliza para calcular el total y tiene que salir 18.140 en el primero

    ResponderEliminar
  41. Hola amigo Damian
    Nuevamente recurro a su valiosa ayuda

    Poseo un Cuadro de Excel que tienes 5 columnas
    1- fecha 2-Referencia 3-Descripcion 4-Debe 5-Haber.

    Lo que buscaba hacer es unificar las 2 Columnas DEBE Y HABER en una sola, mediante macros diferenciando la del haber con signo negativo.

    Fecha Ref - Desc debe Haber
    19/11/2010 655 Otr.Egr.,E, 207,01 0,00
    19/11/2010 656 Otr.Egr.,E, 69,00 0,00
    30/11/2010 657 Otr.Egr.,E, 0,00 0,01
    30/11/2010 658 Otr.Egr.,E, 0,00 153,33
    18/12/2010 659 Otr.Egr.,E, 468,10 0,00
    21/12/2010 660 Otr.Egr.,E, 1528,00 0,00
    28/12/2010 661 Otr.Egr.,E, 42,91 0,00
    28/12/2010 662 Otr.Egr.,E, 42,91 0,00
    31/01/2011 663 Otr.Egr.,E, 0,00 69,00
    31/01/2011 664 Otr.Egr.,E, 0,00 69,00
    31/01/2010 665 Otr.Egr.,E, 0,00 69,00
    31/01/2011 666 Otr.Egr.,E, 0,00 191,00
    31/01/2011 667 Otr.Egr.,E, 406,01 0,00
    01/02/2011 668 Otr.Egr.,E, 0,00 1528,00
    01/02/2011 669 Otr.Egr.,E, 2311,01 0,00
    03/02/2011 670 Otr.Egr.,E, 490,00 0,00
    03/02/2011 671 Otr.Egr.,E, 0,00 189,00
    03/02/2011 672 Otr.Egr.,E, 0,00 538,27
    28/02/2011 673 Otr.Egr.,E, 0,00 69,00
    28/02/2011 674 Otr.Egr.,E, 0,00 212,00
    28/02/2011 675 Otr.Egr.,E, 189,00 0,00
    31/03/2011 676 Otr.Egr.,E, 0,00 69,00
    31/03/2011 677 Otr.Egr.,E, 0,00 212,00
    31/03/2011 678 Otr.Egr.,E, 0,00 163,33

    El problema se presenta pues la cantidad de filas cambia, por cada cuenta, asi como la posicion de los montos en cada Columna (debe y Haber)

    Lo hago colocando manualmente ordenandolas y poniendo la columna haber negativa


    Este es lo que hago con el archivo (arriba esta el archivo Original)

    19/11/2010 655 Otr.Egr.,E, 207,01
    19/11/2010 656 Otr.Egr.,E, 69,00
    30/11/2010 657 Otr.Egr.,E, -153,33
    30/11/2010 658 Otr.Egr.,E, -0,01
    18/12/2010 659 Otr.Egr.,E, 468,10
    21/12/2010 660 Otr.Egr.,E, 1528,00
    28/12/2010 661 Otr.Egr.,E, 42,91
    28/12/2010 662 Otr.Egr.,E, 42,91
    31/01/2011 663 Otr.Egr.,E, -191,00
    31/01/2011 664 Otr.Egr.,E, -69,00
    31/01/2011 665 Otr.Egr.,E, -69,00
    31/01/2011 666 Otr.Egr.,E, -69,00
    31/01/2011 667 Otr.Egr.,E, 406,01
    01/02/2011 668 Otr.Egr.,E, -1528,00
    01/02/2011 669 Otr.Egr.,E, 2311,01
    03/02/2011 670 Otr.Egr.,E, -538,27
    03/02/2011 671 Otr.Egr.,E, -189,00
    03/02/2011 672 Otr.Egr.,E, 490,00
    28/02/2011 673 Otr.Egr.,E, -212,00
    28/02/2011 674 Otr.Egr.,E, -69,00
    28/02/2011 675 Otr.Egr.,E, 189,00
    31/03/2011 676 Otr.Egr.,E, -212,00
    31/03/2011 677 Otr.Egr.,E, -163,33
    31/03/2011 678 Otr.Egr.,E, -69,00


    Ya tengo un codigo trabajado pero con algunos problemas si me puede ayudar gracias...

    ResponderEliminar
  42. hola anónimo (pongo así por que desconozco tu nombre): entiendo el problema y veo que ya has realizado acciones para solucionarlo.
    lamentablemente siempre vamos a necesitar un punto de referencia para saber en donde comienza y terminan los límites de la tabla (filas y columnas). si vos me decís que la columna débito y credito estarán siempre a la derecha de la tabla es sencillo armar algo. hagamos lo siguiente: pasame un ejemplo de la tabla a la direccion damianexcel@gmail.com y codifico una macro, devolviéndote el archivo.
    quedo al aguardo de tus noticias.

    ResponderEliminar
  43. Hola, Damián, recurro a tu experiencia.
    Estoy haciendo un sistema en VBA y necesito proteger el archivo XLS (es un único archivo) para que el usuario final no pueda hacer un COPY-PASTE en otra compu. La enorme desventaja es que mi cliente vive en el campo y no voy a poder ir yo a instalárselo, por lo tanto va a llevárselo en un CD. Y él va a copiar el archivo desde el CD y pegarlo en su escritorio y ya lo comienza a usar. La única manera que se me ocurre de protegerlo es mediante la fecha: guardo en una hoja del XLS la fecha en que se lo entregué y de ahí en adelante le doy no se... 15 días para que lo abra. La primera vez que lo abre (dentro de los 15 días), se lo habilito de por vida. Ahora bien, este sistema de protección es vulnerable, ya que con sólo cambiar la fecha de Windows, pueden entrar sin problemas.
    De todos modos, le agregué que si es la primera vez que ingresa, guarde la fecha de ingreso y luego compare la fecha que yo le puse "de entrega" con esta de la primera vez y no con la fecha actual, para que no pueda probar de cambiar la fecha de Windows luego de abrirlo por primera vez; pero de todos modos va a tener el XLS original en el CD y va a poder probar todas las veces que quiera (siempre y cuando deduzca mi proceso de pensamiento, no?).
    Bueno, si en algo no fui claro, te pido me lo digas, para ayudarte a ayudarme.
    Muchas gracias!!!
    Abrazo.

    ResponderEliminar
  44. AnyMa: ¿como estás? muy buena consulta la tuya, siempre necesitamos proteger nuestro trabajo de situaciones como la que planteas. La solución de las fechas es muy buena, una de las tantas posibles en este difícil tema de asegurar un XLS. Ojo: los libros de Excel (u otro archivo cualquiera de Office) son vulnerables, siempre. Existen muchas formas de desbloquear libros, módulos VBA, hojas, etc, etc. Solo es cuestión de un poco de conocimiento y ganas. O Goolge y ganas. jajaja.
    Aquí te dejo un post que levanté hace tiempo al respecto, en donde leo el nro de serie del disco rígido de la PC (el disco en donde está instalado el sistema operativo) y en base a ello dejo o no abrir el libro.
    Fijate si te sirve, cualquier cosa me avisas.
    Un abrazo.
    http://damianexcel.blogspot.com/2010/04/macros-fso-evitar-que-abran-nuestros_23.html

    ResponderEliminar
  45. Damián, es excelente la idea de leer el número de serie del disco, no la conocía; pero lamentablemente no sé ni voy a saber el número de serie del disco ya que yo no voy a estar en contacto directo con la PC de mi cliente en ningún momento. Ojo, que si bien no lo necesito, el problema es que cualquiera que copie el XLS desde el CD lo va a poder usar sin problemas ya que venía con el flag desactivado.
    Bueno, habrá que confiar en el cliente (aunque, trataré de no hacérsela tan facil... jejeje).
    Muchas gracias Damián !
    Muy bueno esto de leer los datos de la PC.
    Abrazo.

    ResponderEliminar
  46. te paso un ejemplo que realicé hace bastante tiempo, ya que tu problema radica en que envias el original en un cd. ya conoces sobre VBA, estimo que estos pasos lógicos no te serán de mayor inconveniente:
    1) le remití el archivo a mi cliente. cuando abrió el archivo, tomé el nro de serie del disco y lo encripté, con una función muy sencilla. a esa cifra la guardé dentro de una celda en una hoja oculta.
    2) al nro de serie del disco lo coloqué en una celda visible y le pedí que me la pase por mail, por teléfono o por mensaje de texto. el medio no importa, yo quería su numero de disco. desde ya que no le dije que era ese nro.
    3) cuando recibí el nro, le apliqué el mismo procedimiento de encriptación y, obviamente, obtuve la misma cifra que tenía el dentro de la celda, en la hoja oculta. ¿se entiende?
    4) le pasé por mail la "clave de activación", que como te dije en el punto anterior, es la misma que el tiene en su propio archivo, sin saberlo.
    5) ingresó esa clave y con algo así:
    if Clave = Sheets("Oculta").Range("clave")
    desactivo el libro
    else
    no desactivo nada
    end if
    controlé y activé el libro de Excel sin problemas.

    que pasa: cada disco rígido tiene su propio e irrepetible nro de serie. entonces debo manejarme con (casi) el mismo sistema de activación que utiliza cualquier aplicación: te paso yo la clave. cuando otro copie y pegue ese archivo en su PC no podrá correrlo, por que le pedirá la clave y ahí es donde se deberá contactar con vos ¿se entiende?

    mi cliente necesitaba usar el archivo antes de comprarlo, así que también incluí un "contador", guardando en otra celda de la hoja oculta la cantidad de veces que iba ingresando. yo le dí hasta 20, luego de eso... chau, no abre mas.

    tu planteamiento es realmente útil y necesario, así que estaré levantando un post ampliando mi ejemplo con tu problemática.

    otro tip: mediante FileSystemObject se puede reconocer que tipo de unidad es (fija, removible, etc, etc), de esa forma también evitas que ejecuten el libro desde un cd o un pendrive.
    cuando apenas me inicié en VBA y no sabía de FileSystemObject me ideé una rutina muy sencilla para evitar que lo ejecuten desde un cd:

    'creo un archivo de texto en el disco donde estan corriendo el archivo (cd)
    Open UnidadDeDiscoActual &"\texto.txt" for output as #1

    si la linea anterior tira error... es por que lo trata de abrir desde un cd, ya que no se puede escribir en él. y si tiraba error... no se abría. si se habría, luego ejecutaba:
    Kill UnidadDeDiscoActual & "\texto.txt"
    para borrar el txt.
    es algo muy básico, pero que me sirvió para evitar que abran el libro desde un cd.
    pero lo ideal es actuar con FileSystemObject y los pasos que te describí al principio.
    gracias x tus mensajes y cualquier cosa me avisas.

    ResponderEliminar
  47. Uh, buenísimo el sistema. Si no entendí mal, la idea es que le muestre a él el número de serie encriptado la primera vez que lo abre y cuando me lo pasa por teléfono lo desencripto y le digo que ponga esa clave (en realidad su número de serie de disco), no?
    Esa me gustó mucho. Creo que la voy a poner en práctica.
    Muchas gracias, Damián !!!
    Abrazo!

    ResponderEliminar
  48. estimado: levanté un post en base a tu consulta, que toma el nro de serie del disco, lo encripta y guarda ambos en una hoja oculta del libro, fuera del alcance del usuario.
    luego te permite generar ese mismo código a vos (aunque no estes presente en el lugar) y enviarle la clave para que pueda activar el producto.
    fijate en este link: http://damianexcel.blogspot.com/2011/06/proteger-las-macros-de-excel.html
    en donde con FileSystemObject hago posible esta forma de trabajo. un abrazo

    ResponderEliminar
  49. GRACIAS... TOTALES !!! GENIO !!!

    ResponderEliminar
  50. Hola Amigo Damian
    Soy Johan Moreno Nuevamente con una consulta que hacerte

    Poseo un archivo al cualquier quiero hacerle una lista de las hojas que posee...

    Supongamos que tengo 6 hojas
    Hoja1 hoja2 hoja3 hoja4 hoja5 y hoja6

    El codigo que estoy copiando me hace la referencia a todas las hojas... si quisiera que fuese apartir de una hoja en especifico...
    por ejemplo Hoja3 en adelantte
    Indice
    hoja4
    hoja5
    Hoja6

    C O D I G O
    Option Explicit
    Sub crear_hoja()
    Dim vbynSep
    Dim startPos As Long

    vbynSep = MsgBox(prompt:="crear nueva hoja para el índice?", Buttons:=vbYesNo)
    If vbynSep = vbYes Then
    Worksheets.Add
    On Error Resume Next
    With ActiveSheet
    .Move Before:=Sheets(1)
    .Name = "Indice"
    With Range("A1")
    .Value = "Indice"
    .Font.Size = 12
    .Font.Bold = True
    .Font.Underline = xlUnderlineStyleSingle
    End With
    End With
    On Error GoTo 0
    startPos = 4
    Else
    startPos = 2
    End If

    Call insertar_indice(ByVal startPos)

    End Sub
    Sub insertar_indice(ByVal startPos)

    Dim wksHoja As Worksheet
    Dim nrFila As Long

    nrFila = startPos
    For Each wksHoja In Worksheets
    If wksHoja.Name <> ActiveSheet.Name Then
    nrFila = nrFila + 1
    ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(nrFila, 1), Address:="", _
    SubAddress:=wksHoja.Name & "!A1", TextToDisplay:=wksHoja.Name
    End If
    Next


    End Sub

    Otra consulta como hago mediante macro para que en una celda pueda eliminar los datos que excedan 21 caracteres

    Ejemplo

    Damian blog de ayudaExcel

    Esta frase tiene 25 caracteres
    Eliminando lo que sobre pasa los 21 Caracteres deberia quedar asi "Damian blog de ayudaE" borrando de la celda XCEL que es lo que excede a los 21 caracteres...

    ResponderEliminar
  51. estimado Johan: primero contesto tu segunda consulta, sobre la longitud de los caracteres:
    Sub EliminarSegunLongitud()
    for x = 1 to 10
    if len(cells(x,1)) > 21 then
    cells(x,1)=left(cells(x,1),21)
    end if
    next x
    end sub
    el procedimiento de arriba recorre desde el rango A1 al A10. en cada vuelta del bucle pregunta si la longitud es mayor a 21 caracteres: si es así, uso la función Left(cadena, cantidad de caracteres) para tomar solamente los 21 caracteres de la izquierda.

    para tu primer consulta, necesito que me pases el archivo y me expliques un poco mas, por que no lo comprendo del todo.
    un abrazo y quedo al aguardo de tus noticias.

    ResponderEliminar
  52. Hola Damian, esperando contar con tu apoyo, tengo una MACRO que me genera un archivo DBF con datos extraidos de un txt, resulta que me han cambiado el txt y no se como hacer para que la macro me genere el DBF con la misma estructura de antes, te estoy enviando los archivos a tu mail para ver si puede echarme una mano.

    ResponderEliminar
  53. Asael: estudio los archivos que me enviaste y me pongo en contacto con vos.
    un abrazo y gracias x el mensaje.

    ResponderEliminar
  54. Hola Damian, necesito de tu experiencia, tengo un equipo rotativo que usa 12 barras (martillos) y las mismas son intercambiables y cada vez que se desgastan las repongo, con la particularidad que siempre tienen pesos distintos las nuevas, la idea es tratar de balancear los pesos de tal manera que cuando las instale no me cause tanto desbalance en mi equipo rotativo. Podemos distribuirlo en 3 filas y cuatro columnas A1:D3 donde tengo que distribuir cada martillo para que me den el peso mas semejante entre filas y entre columnas sabiendo que la suma de 4 martillos por supuesto en mayor que la suma de 3, esto por el caso de las columnas y filas. Los pesos de los martillos son:
    165,0
    163,9
    163,7
    163,4
    163,2
    162,8
    162,3
    162,2
    162,2
    162,0
    161,8
    160,0

    ResponderEliminar
  55. Juan: no comprendo muy bien tu planteamiento. Si coloco los datos tal cual lo indicas, la suma de las columnas me arrojan valores que oscilan entre los 483 y 492. En cambio, si sumo por fila, la variación es de 648 a 652.
    Pasame por Mail un archivo y detallame mejor que resultado necesitas obtener.
    Gracias x tu mensaje. Quedo al aguardo de noticias.

    ResponderEliminar
  56. Hola Damian. Tengo una serie de números con más de dos decimales y debo redondearlos a sólo 2. Aplico la función redondear y perfecto, Excel me los redondea. Luego copio el resultado y pego como valor para luego utilizarlos en ciertos cálculos. El caso es que cuando realizo estos cálculos los resultados no son precisos porque Excel toma internamente todos los decimales y no únicamente los dos que redondeé. ¿Cómo puedo eliminar los decimales que sobrepasan los dos que necesito? Gracias por tu respuesta.

    ResponderEliminar
  57. Pasame una copia del archivo que necesito verificar algunas cosas,.
    Dentro del mismo dejá los números originales y la función que aplicas.
    Aclarame si a esos números los escribis o provienen de otra fuente, como ser un archivo de texto o base de datos.
    Quedo al aguardo de tus noticias.

    ResponderEliminar
  58. Muy buenas Damian:
    Utilizo de manera habitual las tablas dinamica en excel 2003. Y me gustaria saber si hay manera de "pubilcarlas" en web con sus caracteristicas dinamicas. Pues de manera "plana" (sin posibilidad de interactuar), lo hace sin problemas. Pese a que la opcion existe en el menu, en la practica no me funciona.

    Gracias por tu tiempo

    ResponderEliminar
  59. apiezas: enviame por mail un archivo de ejemplo, así lo reviso un poco y te puedo ayudar bien.
    gracias

    ResponderEliminar
  60. ya vi el archivo, luego lo analizo y te digo.

    ResponderEliminar
  61. SOY JOHANMORENO2005 DE VENEZUELA
    hola damian recurro a tu valiosa ayuda desde venezuela...

    queria comentarte tengo un archivo en el cual voy creando hojas podrian llegar a ser 30, para evitar movilizar al usuario por las hojas pense en colocar un listbox desde donde se pueda ver las hojas creadas y pense que usando la funcion de multiseleccion pueda selecccionar varias hojas del listbox y que a su vez esa hojas seleccionada sean impresas, es posible esta MACRO Y si me puedes ayudar con el codigo.

    O que me aconsejas para manejar el caso
    te envio por correo el ejemplo sencillo para tu ayuda...???

    ResponderEliminar
  62. Hola DAmian, cordial saludo
    Por favor necesito ayuda, con lo siguiente:
    Como proteger la hoja de cálculo para evitar que se pueda activar el Botón de Office (Opciones de Office), que no se pueda activar o mostrar la cinta de opciones, esconder la barra de menús, que no se pueda realizar ningún tipo de cambios, dejar activa solamente diseño de pagina/configuración de página, y ajustar área de impresión??

    Gracias por tu colaboracion,

    JAVISHALOM

    ResponderEliminar
  63. estimado Johan: aquí levanté esta entrada, comentame si te fue bien:
    http://damianexcel.blogspot.com/2011/11/imprimir-hojas-con-un-listbox.html

    ResponderEliminar
  64. Javi: la cinta de opciones, presentes en MS Excel desde la version 2007, se crean mediante el lenguaje XML, el tan conocido lenguaje de etiquetas que hace furor en la web y con el intercambio de datos. No es posible trabajarlas al igual que los menús clásicos (que simplemente se podían ocultar y listo), siendo necesario conocer sobre XML y la estructura que maneja en Excel para crear las ribbons.
    ojo con una cosa: vos podes ocultar algo....pero no te olvides que siempre quedan activadas las teclas de acceso directo: vos podrías quitarme el botón de Imprimir, pero yo con "control + p" y otras cosas imprimiría lo mismo ¿Se entiende? Y de la misma forma para cualquier tipo de acción.
    Yo intentaría con Excel 2003, tengo en este blog entradas sobre como ocultar los menús. Igualmente dame un tiempo y levanto un post sobre XML, aunque no creo que pueda solucionar todo lo que pedís.

    ResponderEliminar
  65. Buenas tardes Damian, epsro te encuentres bien en el ejemplo de busqueda en macro como realizo la funcion a no forzarla a un rango, dado que bajo unos reportes y estos van cambiando de tamaña y los camparo con una base de datos que voy construyendo.
    Atentamente:Luis Antonio Morales.

    ResponderEliminar
  66. Luis: en lugar de poner el nombre del rango, va así:
    Cells.Find(valor)

    Con Cells evitas hacer referencia a un rango determinado, buscando en toda la hoja. Fijate si te sirve y cualquier cosas me avisas.
    Un abrazo.

    ResponderEliminar
  67. Saludos, tengo problemas con algunos archivos sale el mensaje:
    ¨No se puede obtener acceso a(¨¨).El documento puede ser de solo lectura o estar cifrado¨.
    Cambie las propiedades de seguridad del archivo pero aun no tengo acceso, creo que se debe a algun error en VB.¿Que puedo hacer?

    ResponderEliminar
  68. Beto: pasame el archivo al correo que figura al pié del formulario, así lo estudio un poco. necesito ver si es un inconveniente que está causando el propio libro o bien es algo de tu sistema operativo.

    ResponderEliminar
  69. Hola... estuve revisando el sitio y es excelente... así que me animé a hacer una consulta.

    Necesito tener un libro en excel en donde cada hoja contenga un logo y una marca de agua bloqueados o inamovibles, además necesito que cuando se cree una hoja nueva esta venga con lo anterior... todo esto es para que no entreguen nuestra info con otro nombre... algo asi como copyright. Desde ya ,uchas gracias.

    ResponderEliminar
  70. BetaMic: gracias x tus palabras.
    Te comento: para que una imagen sea inamovible la hoja debe estar protegida. Por lo tanto habría que establecer que celdas puede usar el usuario, para dejarlas desbloqueadas y luego proteger el resto.
    En cuanto al tema de que cada vez que se inserte una nueva hoja esta contenga el logo no hay problemas, se soluciona con una macro. Dejame armarte una entrada al respecto y te aviso.

    ResponderEliminar
  71. BetaMic: aquí te dejo el link a la entrada que lenvanté al respecto, espero que te sirva:
    http://damianexcel.blogspot.com/2012/01/trabajemos-con-hojas.html

    ResponderEliminar
  72. Buenas tardes, necesito crear una macro para guardar una hoja en particular de un archivo pero en formato CSV y en el escritorio, independientemente del usuario que lo utilice.

    Obtuve este código, pero hay un error en la creacion del objeto y tambien le falta la parte del formato del archivo.

    Sub Guarda_enMientorno_Escritorio()
    ActiveDocument.SaveAs Filename:=CreateObject("wscript.shell").specialfolders("desktop") _
    & "\miDocumento"
    End Sub

    Gracias desde ya por la ayuda!

    Robert

    ResponderEliminar
  73. el código que conseguiste es muy incompleto y no funciona correctamente, hasta le falta la extensión "csv" del archivo, por cuanto nunca se generaría correctamente.
    dejame armarte un buen ejemplo y te respondo, ya verás que existen varias cosas a tener en cuenta antes de guardar una hoja como csv mediante macros.
    mañana o pasado te dejo lista la entrada.
    gracias x tu mensaje

    ResponderEliminar
  74. Hola Amigo Damian...
    Robert blanco Aqui te anexo un codigo con el cual podrias hacer lo que pides...

    El codigo no es de mi autoria solo es de un archivo q ubique hace algun tiempo en un foro...

    Sub GuardarCsv()
    Application.ScreenUpdating = False
    ruta = ActiveWorkbook.Path & "\"
    For i = 1 To Sheets.Count
    If Left(Sheets(i).Name, 3) <> "MES" Then GoTo Salto
    aviso = MsgBox("" & vbCrLf & "" & vbCrLf & "¿Desea guardar la hoja " _
    & Sheets(i).Name & " como archivo .csv? " & vbCrLf & "" _
    & vbCrLf & "", 33, "Guardar como .csv")
    Select Case aviso
    Case 1 'Aceptar / Ok
    nomfic = InputBox("" & vbCrLf & "" & vbCrLf & "Indique el nombre con el que quiere guardar la hoja")
    If nomfic = "" Then GoTo Salto
    Sheets(i).Select
    Sheets(i).Copy
    ActiveWorkbook.SaveAs Filename:=ruta & nomfic & ".csv", _
    FileFormat:=xlCSV, CreateBackup:=False
    ActiveWindow.Close (1)
    Case 2 'Cancelar / Cancel
    End Select
    Application.ScreenUpdating = True
    Salto:
    Next i
    Sheets(1).Select


    Para cambiar donde se van a guardar los Archivos CSV modifica la ruta (ruta = ActiveWorkbook.Path & "\") o coloca el archivo tuyo en el escritorio....

    Johan Moreno

    ResponderEliminar
  75. Exacto Johan, muchas gracias x el aporte. Ese código si contempla muchas cosas que hacen funcionar correctamente a la macro.
    Lo único que debería tener en cuenta es cambiar ese bloque If... en donde pone como condición que el nombre de la hoja sea distinta a "MES", ya que no se si lo necesitará en su proyecto.
    De todas formas, tengo pendiente la realización de la entrada, en la cual "mezclaré" un poco de lo que tengo y tu ayuda.
    Gracias y un abrazo

    ResponderEliminar
  76. Roberto:
    te dejo el link a la entrada que levanté sobre como guardar una hoja de cálculos como Csv:
    http://damianexcel.blogspot.com/2012/01/guardar-hojas-de-excel-como-csv.html

    espero que te sea de utilidad, cualquier cosa me avisas.

    ResponderEliminar
  77. Buenos días desde España, quisiera saber si hay alguna manera de referenciar el valor de una celda a una pestaña. Muchas gracias
    David Sanz

    ResponderEliminar
  78. Hola dsr: estimo que lo que necesitas es darle a una hoja elvalor que exista dentro de una celda ¿no? Si es así, el tema es sencillo, salvo que habria que controlar si ese nombre no existe previamente, dado que excel no permite dos hojas con igual nombre. El procedimiento es:
    Sub NombrarHoja()
    'suponemos que el valor está en A1
    if [a1]="" then
    exit sub
    else
    on error resume next
    activesheet.name=[a1]
    if err.number <> 0 then
    msgbox "el nombre no es válido"
    end if
    end if
    End Sub

    primero chequeo que la celda no esté en blanco y luego asigno a la pestaña activa el valor que se encuentre en A1. coloco un controlador de errores, para evitar nombres duplicados o ciertos caracteres que Excel no permite.
    funciona, cualquier cosa me avisas. Gracias x tu mensaje

    ResponderEliminar
  79. Hola amigo mío !!! Tanto tiempo !
    Esta vez te molesto porque me surgió un proyecto para hacer un sistema de inventario y caja. No es muy complicado, pero mi cliente (mi esposa jeje) me pidió que se pueda controlar tanto desde casa (PC de escritorio que oficiaría de servidor) como online a través de Internet (desde la netbook fuera de casa), y sumándole a esto la complejidad de que el sistema sería utilizado por 2 personas (ella y su socia), al mismo tiempo. Claramente estaríamos ante un caso de concurrencia (o como lo llama Excel: "Compartir libro"). Pero como nunca me gustó esto de compartir libros, ya que he visto algunos "baches", se me ocurrió hacer algo como emular un online con un offline actualizado a cada instante. Es decir, que el sistema se encuentre en la PC de casa y que desde el cliente remoto (mediante el mismo u otro sistema) se pueda acceder a los datos (OJO, no sólo consulta de datos, sino un ABM completo). Estoy intentando ver cómo solucionarlo... aunque quizás la mejor forma de hacerlo sea con Escritorio Remoto y utilizando la concurrencia que provee Excel. Te pido por favor si se te ocurre alguna manera de hacerlo por macro, me ayudes y prometo hacerte un monumento al lado del Cristo del Calvario de acá de Tandil.

    Como siempre muchas gracias !!! GENIO TOTAL !!!

    Salu2.xls

    ResponderEliminar
  80. Hola estimado, tanto tiempo !! ¿como anda esa lógica?
    Lo que necesitas es complejo. Personalmente estimo que no te quedará otra que recurrir a una solución sencilla: VPN, y que tanto tu mujer como su socia accedan al archivo desde la red privada virtual, y compartiendo el libro. Estimo que no queda otra, digamos que Excel no es la herramienta ideal para ese tipo de trabajos.
    Otra alternativa sería utilizar las planillas online (google, zoho, office, etc, etc), que hagan sus cambios en ese archivo desde la web, luego descargarlo a la "pc servidor" (cada cierta cantidad de tiempo) y aplicar las macros que sean necesarias.
    Eso sería lo mas fácil, dejame ver si encuentro mejores alternativas, aunque veo que necesitan un sistema basado en la web (dinámico, como php con mysql) mas que una aplicacion de escritorio.

    ResponderEliminar
  81. Ante todo muchas gracias por responder !!!

    La lógica ya no anda desde hace unos meses. Estoy muy escaso de tiempo. Para poder seguir con la Liga Lógica, la Tierra debería girar a la mitad de velocidad para tener 48 horas por día... pero bue... algún día volveré.

    Con respecto a la consulta, me sigue dando vueltas la idea en la cabeza de hacer una conexión por escritorio remoto y compartir el archivo para que lo puedan usar ambas al mismo tiempo. ¿Qué te parece esta solución?

    De nuevo muchas gracias !!!

    ResponderEliminar
  82. Por otro lado, estuve leyendo un poco la entrada

    http://damianexcel.blogspot.com/2011/01/tablas-dinamica-con-access-en-un-sitio.html

    donde usa el FileZilla. Nunca usé un sistema como este y desconozco su alcance. ¿Esto nos ayudaría?

    ResponderEliminar
  83. hola damian, trabajo en una emopresa de correo y tengo el siguiente problema en un libro.
    Tiene una Hoja "Base de Datos" con codigo de barra, cliente, direccion y zona
    otras ojas con los meses, en ellas leó el codigo de los sobres con el lector de codigos de barras y mediante unafuncion BuscarV meaparecen todos los otros campos, el problema esta cuando no existe el codigo en la hoja base de datos, me salta #N/A, lo que necesito es que me aparesca un msgbox que diga "NO EXISTE EL CLIENTE", cosa de que no me lea el siguiente codigo y de cargar en el momento en la base y no olvidame, osea que no me deje seguir

    ResponderEliminar
  84. Jajaja, nos pasa exactamente lo mismo, el día debería tener mas o menos 48 hs. Se me hace muy complicado levantar nuevas entradas, generalmente estoy respondiendo a las consultas, por que el tiempo no me alcanza para nada.
    Y si amigo, estimo que lo mas sencillo sería utilizar el Escritorio Remoto, tomando todos los recaudos del caso. Que ambas puedan acceder al archivo situado en la PC "servidor", por que de otra forma estaríamos hablando de crear un proyecto de gran envergadura y bastante complicado.

    ResponderEliminar
  85. Uruguayio: vas a tener que pasarme el archivo a la dirección de mail que figura al pié del formulario, por que no termino de comprender del todo el funcionamiento de tu proyecto.
    Describime paso a paso como es el sistema, por que ciertas cosas no me cierran.
    Quedo al aguardo de tus noticias

    ResponderEliminar
  86. Joya, muchas gracias nuevamente Damián !!! Te mando un saludo y un abrazo enorme y como siempre vos al pie del cañón.

    ResponderEliminar
  87. Hola amigo damian...

    Solo queria hacer una consulta...

    Tengo una informacion en una hoja que ocupa este rango de 5 columnas con informacion desde A 5:E10000 por ejemplo, es una tabla algo asi


    CUENTA FECHA DESCRIPCION CONCEPTO SALDO
    110101 02/03/2012 Caja Transaccion 10000
    110101 02/03/2012 Caja Transaccion 80000

    Mediante esta formula que tengo en otra hoja hago referencia al total del saldo de la columna E con solo los montos positivos o mayores que cero "coloco formula"

    SUMAR. SI(Profit_1! E5:E10000;">0";Profit_1! E5:E10000)
    Con esta formula logro sumar solo los valores positivos de un rango, todo bien hasta alli

    La informacion que tengo para alimentar la Tabla de este rango A 5:E10000 , lo hago mediante macros y con ado... Dentro de este codigo elimino informacion, limpio la hoja, quito columnas con informacion que no necesito,etc , para que quede esta estructura

    CUENTA FECHA DESCRIPCION CONCEPTO SALDO

    Al hacer esto la formula por haber borrado el rango(las Columnas Originales) y aunque sustituyo el rango con informacion nueva, la formula queda con este error, asi:

    SUMAR. SI(profit_1!# ¡REF! ;"<0"; profit_1!# ¡REF!)

    Como haria alli mi duda para evitar q esto suceda... Su recomendacion y ayuda

    Gracias...

    ResponderEliminar
  88. Hola Johan: la solución mas sencilla para ese problema es colocar la función luego de todos los cambios, mediante una macro, de la siguiente forma:
    Range("a1").FormulaLocal = "=SUMAR.SI(Hoja1!C1:C5;dato;Hoja1!D1:D5)"

    o sea: mediante la propiedad "formulalocal" de un rango (en este caso A1), coloco la función SUMAR.SI, con los 3 argumentos.
    adaptalo a tu proyecto y tendría que andar sin problemas. Un abrazo y gracias x tu mensaje

    ResponderEliminar
  89. Hola! Envio mi consulta... tengo una planilla con datos de consumos de lineas telefonicas que pertenecen a diferentes familias (3 o 4 lineas por grupo familiar) cada mes debo enviar un e mail por grupo familiar con los consumos de esas lineas por e mail. Quiero poder a travez de una macro que valla filtrando grupos familiares y cree archivos nuevos con el detalle de la lineas. Ayuda por favor!! gracias! genial el blog

    ResponderEliminar
  90. Miguel: dale un vistazo a mi nueva entrada sobre el envio de mails:
    http://damianexcel.blogspot.com.ar/2012/06/macros-como-enviar-mails-desde-excel.html
    Si aun estas interesado, podemos resolver tu planteamiento en base a ese ejemplo, ordenando la lista de familias y enviando un correo a cada una de ellas.

    ResponderEliminar
  91. Hola Damian
    Antes que nada, quisiera agradecerte y felicitarte por
    brindar conocimiento a cambio de Nada. Es una actitud
    digna y loable. Te comento, mi nombre es Mauro y estoy
    ingresando de a poco en el mundo VBA, dandome cuenta
    que las ganas de aprender son enormes, porque me encanta excel, pero la capacidad es poca (jeje).
    En fin, mi o mis dudas son las siguientes.
    Tengo un libro que contiene en una de sus hojas una tabla
    en donde ordenada por Nº de legajo de varios empleados por fila, tengo en las columnas contiguas DNI, DIRECCION TELEFONO etc etc.
    Que es lo que quiero? La intencion es tener un userform que me pida el ingreso de un numero de legajo y que en funcion de ese legajo, me muestre ya sea por un msgbox, u otro userform en textboxs o labels la informacion correspondiente a cada uno.
    Ahora bien, con mi nula capacidad y despues de haber leido por alli, y por aqui, llegue a que ingreso un Nº de legajo en un textbox de un userform y me muestra los datos correspondientes en un msgbox. (Genial!).Primero probe con cell.find, y termine usando un vlookup, porque fue lo que mas entendí.(la verdad es que me gustaria que se mostrase los datos en textbox de un nuevo userform)
    Pero bueno, ahora se presenta que si la informacion que me muestra (suponiendo que sea una base de datos) es vieja o erronea, estaria BUENISIMO poder modificar lo que en la tabla existe, como asi tambien agregar un nuevo legajo en caso de que este no existiera.(para tanto no me dio)...
    Entonces, si bien no quiero que vos hagas el trabajo por mi, me encantaria que me pudieras explicar lo basico de estos procedimientos, para que yo me arme de herramientas para poder hacerlo por mi mismo, porque intente comprar un libro (excel 2003 programacion con vba editorial Anaya ) para poder estudiar un poco mas y es carisimo!!!!! y la verdad que separarme por un libro no da. (jaja) No temas, no te pediré un curso! solo entender de que manera puedo llegar a lograr lo del ejemplo anterior. Bueno, basta de blablabla, y espero haber despertado tu interes.
    Mi mail es mauro_fuentes@yahoo.com.ar en caso de que quieras escribirme.
    Un fuerte abrazo y gracias de antemano.
    Atte. Mauro Fuentes.-

    ResponderEliminar
  92. Hola Damian
    Antes que nada, quisiera agradecerte y felicitarte por
    brindar conocimiento a cambio de Nada. Es una actitud
    digna y loable. Te comento, mi nombre es Mauro y estoy
    ingresando de a poco en el mundo VBA, dandome cuenta
    que las ganas de aprender son enormes, porque me encanta excel, pero la capacidad es poca (jeje).
    En fin, mi o mis dudas son las siguientes.
    Tengo un libro que contiene en una de sus hojas una tabla
    en donde ordenada por Nº de legajo de varios empleados por fila, tengo en las columnas contiguas DNI, DIRECCION TELEFONO etc etc.
    Que es lo que quiero? La intencion es tener un userform que me pida el ingreso de un numero de legajo y que en funcion de ese legajo, me muestre ya sea por un msgbox, u otro userform en textboxs o labels la informacion correspondiente a cada uno.
    Ahora bien, con mi nula capacidad y despues de haber leido por alli, y por aqui, llegue a que ingreso un Nº de legajo en un textbox de un userform y me muestra los datos correspondientes en un msgbox. (Genial!).Primero probe con cell.find, y termine usando un vlookup, porque fue lo que mas entendí.(la verdad es que me gustaria que se mostrase los datos en textbox de un nuevo userform)
    Pero bueno, ahora se presenta que si la informacion que me muestra (suponiendo que sea una base de datos) es vieja o erronea, estaria BUENISIMO poder modificar lo que en la tabla existe, como asi tambien agregar un nuevo legajo en caso de que este no existiera.(para tanto no me dio)...
    Entonces, si bien no quiero que vos hagas el trabajo por mi, me encantaria que me pudieras explicar lo basico de estos procedimientos, para que yo me arme de herramientas para poder hacerlo por mi mismo, porque intente comprar un libro (excel 2003 programacion con vba editorial Anaya ) para poder estudiar un poco mas y es carisimo!!!!! y la verdad que separarme por un libro no da. (jaja) No temas, no te pediré un curso! solo entender de que manera puedo llegar a lograr lo del ejemplo anterior. Bueno, basta de blablabla, y espero haber despertado tu interes.
    Mi mail es mauro_fuentes@yahoo.com.ar en caso de que quieras escribirme.
    Un fuerte abrazo y gracias de antemano.
    Atte. Mauro Fuentes.-

    ResponderEliminar
  93. Hola Damian..!Espero me puedas ayudar.
    Tengo un archivo que requiero que el encabezado se copie en cada una de las lineas que estan bajo el encabezado, En una columna aparte. Ai por ejmplo celda b3 el encabezado "CHEQUES" linea b4,b5,b6 numero consecutivo de los cheques, requerimiento, que en la a4,a5,a6 diga "CHEQUES". y si abajo de este grupo hay otro subtitulo que diga "EFECTIVO", este titulo debe ponerse en la columna A de las lineas que le siguen..

    Gracias, espero me puedas ayudar!

    ResponderEliminar
  94. Estimado. Soy un admirador de Excel y leyendo este blog mi admiración es aun mayor. Estoy buscando una sección que lei por aqui hace un tiempo en donde mostrabas artistas que creaban imagenes utilizando excel, combinanado celdas, colores, etc. Podrias poner el link que no lo puedo encontrar ahora? Desde ya muchas gracias.

    ResponderEliminar
  95. Lolibloom: en esta entrada encontrarás el link al archivo de excel que, mediante macros, toma una foto cualquiera y la vuelca a una planilla:
    http://damianexcel.blogspot.com.ar/2011/07/gracias-estimados-lectores.html

    si quieres ver distintas (y extremadamente profesionales) formas de dibujar haciendo uso de las "Shapes", en YouTube tienes a mano muchos vídeos ("arte en excel", "dibujo en excel" y busquedas por el estilo)
    Gracias por tus palabras.

    ResponderEliminar
  96. Anónimo: no comprendo el problema que me planteas, por favor envíame el archivo a la dirección de correo electrónico que figura al pié del formulario, explicándome mas detalladamente el asunto. De ser posible, levantaré un post con tu consulta.

    ResponderEliminar
  97. Anónimo: fijate que tengo un post levantado sobre trabajos con formularios (ve a la sección "mapa del sitio - macros) y ahí lo encontrarás.
    Tiene muchas cosas que te servirán en el proyecto de ABM que necesitas.
    Cualquier cosas quedo al aguardo de tu consulta.
    Gracias.

    ResponderEliminar
  98. Hola damian,

    Necesito que me colabores me pideron hacer un cronograma de actividades con alertas de fecha donde tengan colores y avisos de alertas.. no tengo ni idea como hacerlo

    ResponderEliminar
  99. Paola: brindame un poco mas de detalles sobre que y como debe realizarse ese cronograma... pueden existir cientos de formas de hacerlo, pero necesito tener mas datos a mano para ayudarte bien.

    ResponderEliminar
  100. Buenas tardes Damián,

    enhorabuena por el blog, me está sirviendo de gran ayuda. Sin embargo, estoy intentando resolver una cuestión en la que creo que me puedes ayudar.

    Versión: excel 2000

    Mi intención es enviar correos electrónicos a partir de datos obtenidos en celdas de una hoja de excel, pero con la condición de no utilizar macros.

    Bien, la estructura básica de fórmulas que estoy utilizando y que me funcionan es la siguiente:

    =HIPERVINCULO(CONCATENAR("mailto: ";A1;"?cc=";A2;"; ";A3;"; ";A4;"&body=";A5;"&subject=";A6);"micorreo@servidor.es")

    El problema es que el tamaño del "cuerpo" del correo está limitado y no puedo integrar todo el texto que me gustaría (como concatenación de otras celdas en las que tengo datos relevantes para el asunto o el cuerpo del correo).

    ¿Hay alguna otra vía para concatenar datos y enviarlos por correo electrónico sin utilizar macros? o estoy "condenado".

    Gracias de antemano por tu atención y enhorabuena otra vez por el blog.

    Raúl.

    ResponderEliminar
  101. Estimado Raúl: no conozco otra forma de enviar mails desde Excel que no sea a través de macros: con funciones (fórmulas) comunes es imposible disparar esa clase de eventos y "manejar" otra aplicación. Lo mas parecido es hacer click al hipervínculo y que se abra Outlook... pero mas que eso no.
    Creo que estás condenado a las macros. Jaja. Un abrazo

    ResponderEliminar
  102. Buenos días Damián,

    Antes que nada decir que el blog es espectacular. Me ha ayudado mucho hasta ahora partiendo de la base de que he empezado con Excel hace un mes, pero necesito ayuda para lo que intento hacer ahora.

    Te expongo mi problema. Tengo una tabla de 10 columnas y 939 filas. En dos celdas aleatorias se reciben dos datos de otras hojas. Llamemos a eso datos "X" e "Y". En la columna "A" están los datos de "X" (hay varias celdas combinadas ya que a u dato de "X" corresponden varios datos de "Y" en la columna B). como he dicho, en la columna "B" están los datos de "Y". y ahí viene la pregunta… Según los datos recibidos de "X" e"Y" en las celdas aleatorias…. Como hago para que me busque esos datos en la tabla y me arroje los datos de las columnas "C", "D", "E" etc…?

    Es decir, se deben buscar datos de "X" en la columna "A", los datos de "Y" en la columna "B" y de esta coincidencia, que me de los datos de las demás columnas que están en esa fila que se produce esa coincidencia entre "X" e"Y".

    Muchas gracias de antemano por tu ayuda. Espero haberlo explicado bien.

    Un saludo.

    ResponderEliminar
  103. Me "parece" (mas o menos) entender el planteamiento. Por favor cuantificame los ejemplo, dame datos concretos, así termino de cerrar la idea y puedo ayudarte correctamente.
    Gracias por tu interés en el blog

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

funciones: convertir numeros a letras con excel

En realidad hace tiempo que vienen consultándome sobre esto... quizás cinco o seis años . Debe ser una de las funciones mas buscadas de Excel, por lejos: la posibilidad de escribir: 1.534,63 y que en una celda aparezca magicamente "un mil quinientos treinta y cuatro c/15/100". Aquí les dejo una solución, basada en funciones , sin utilizar macros, la cual preparé exclusivamente para este Blog. A pesar de los millones de usuarios que requieren esta herramienta, no viene incorporada en Excel, debemos armarla nosotros mismos .  Luego de la imagen irá la explicación de como llegué a lograr esto, dado que es un proceso medianamente complejo , que utiliza tres o cuatro funciones básicas y requiere de varios pasos. así quedará nuestra planilla y siempre devolverá en letras el valor que ingresemos en A1 [+/-] Ver el resto / Ocultar Desde ya aclaro: esta no es " la forma " de hacerlo, simplemente es una mas, evitando el uso de macros. Sobre esta base, comencemos: 1) El núme

macros: como enviar mails desde Excel (vba)

Un gran amigo "on-line", Johan Moreno, de Colombia , me hizo llegar la inquietud de cómo enviar mails desde Excel . Si bien contaba con algunas líneas de código sobre el particular, decidí retomar mi ejemplo y adaptarlo mejor a las circunstancias. Hace unos minutos termino de remitirle un correo con la solución a Johan... desde Excel y con un archivo adjunto, mismo que transcribo a continuación para ayudar a todos con esta tarea. Veamos primero las dos formas principales de enviar mails: mediante Outlook o nuestro Web Mail ( yahoo, gmail, hotmail, etc, etc ) No soy usuario de Outlook en lo absoluto: no confío en los agujeros de seguridad que continuamente aparecen y, por otro lado, t eniendo a mi alcance una herramienta tan poderosa (y gratuita) como Gmail, la cual ahora también permite sincronizar los mensaje con la Pc para verlos offline (deben activarlo en "google labs") ... no creo que me haga usuario ni hoy ni mañana. Igualmente mas adelante daré una solució

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto. Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV(). la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla. [+/-] Ver el resto / Ocultar Vamos a necesitar una columna "auxiliar" para llevar a buen término este proyecto. Con macros el tema sería mas sencillo, pero aquí la cuestión es resolverlo con las funciones de Excel, sin VBA. Paso a paso: Como primer medida chequeamos que valores de la columna A coincide co