Regresar a la Pagina de Inicio

25/2/2010

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.

101 comentarios:

Anónimo dijo...

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

Damian Omar Silva dijo...

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

Damian Omar Silva dijo...

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

Anónimo dijo...

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"

Damian Omar Silva dijo...

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.

Anónimo dijo...

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

Damian Omar Silva dijo...

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.

Anónimo dijo...

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

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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

Anónimo dijo...

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...

Damian Omar Silva dijo...

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

Anónimo dijo...

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

Damian Omar Silva dijo...

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

hernancho dijo...

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

Damian Omar Silva dijo...

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

cesar dijo...

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.

Damian Omar Silva dijo...

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

cesar dijo...

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

Damian Omar Silva dijo...

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

Anónimo dijo...

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

Damian Omar Silva dijo...

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

Anónimo dijo...

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.

Damian Omar Silva dijo...

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

@dicto dijo...

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

tecsistemasSENA2010 dijo...

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

Damian Omar Silva dijo...

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.

Anónimo dijo...

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¡¡¡¡¡¡¡

Damian Omar Silva dijo...

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é.

Anónimo dijo...

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

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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

@dicto dijo...

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?

Damian Omar Silva dijo...

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.

Fabrizio Arellano dijo...

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!

Damian Omar Silva dijo...

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

Anónimo dijo...

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

Damian Omar Silva dijo...

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

Anónimo dijo...

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

Anónimo dijo...

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...

Damian Omar Silva dijo...

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.

AnyMa dijo...

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.

Damian Omar Silva dijo...

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

AnyMa dijo...

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.

Damian Omar Silva dijo...

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.

AnyMa dijo...

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!

Damian Omar Silva dijo...

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

AnyMa dijo...

GRACIAS... TOTALES !!! GENIO !!!

Johan dijo...

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...

Damian Omar Silva dijo...

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.

Asael_ito dijo...

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.

Damian Omar Silva dijo...

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

Juan Rodriguez dijo...

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

Damian Omar Silva dijo...

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.

Anónimo dijo...

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.

Damian Omar Silva dijo...

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.

apiezas dijo...

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

Damian Omar Silva dijo...

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

Damian Omar Silva dijo...

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

Johan dijo...

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...???

JAVISHALOM dijo...

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

Damian Omar Silva dijo...

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

Damian Omar Silva dijo...

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.

Anónimo dijo...

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.

Damian Omar Silva dijo...

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.

BETO0884 dijo...

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?

Damian Omar Silva dijo...

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.

BetaMic dijo...

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.

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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

Robert Blanco dijo...

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

Damian Omar Silva dijo...

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

Johan dijo...

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

Damian Omar Silva dijo...

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

Damian Omar Silva dijo...

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.

dsr dijo...

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

Damian Omar Silva dijo...

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

AnyMa dijo...

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

Damian Omar Silva dijo...

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.

AnyMa dijo...

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 !!!

AnyMa dijo...

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?

el.uruguayio dijo...

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

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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

AnyMa dijo...

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

Johan dijo...

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...

Damian Omar Silva dijo...

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

migel dijo...

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

Damian Omar Silva dijo...

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.

Mauro Fuentes dijo...

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.-

Anónimo dijo...

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.-

Anónimo dijo...

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!

Lolibloom Sombreros dijo...

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.

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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.

Damian Omar Silva dijo...

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.

Paola Moya Arias dijo...

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

Damian Omar Silva dijo...

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.

Raúl dijo...

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.

Damian Omar Silva dijo...

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

Publicar un comentario en la entrada

Regresar a la Pagina de Inicio

ENTRADAS MAS RECIENTES (ULTIMAS 10)


las + vistas

10 ULTIMOS COMENTARIOS DE MIS LECTORES

Free counters!
blog de periodismo




GRAFICA RIO BRAVO
Serigrafia-Offset
Rosario - Santa Fe - Argentina
TE: 0341 4664028