Jump to content

Antoni

Members
  • Content Count

    10,415
  • Joined

  • Last visited

  • Days Won

    593

Everything posted by Antoni

  1. Hola Gerson: Si soy el Antoni de Todo Excel, (no pude registrarme como Antoni, ya estaba ocupado), gracias por la bienvenida, no sabía de la existencia de Ayuda a Excel. Me gusta. Salu2. Antoni.
  2. Hola: Una de las gracias del encriptado consiste que ni siquiera el encriptador sea capaz de descifrar el mensaje sin el libro de claves. El libro de claves, debes generarlo tu para tener la seguridad de que nadie mas lo va a tener. Es una tontería por mi parte el hecho de decir que no subía el libro de claves porqué pesaba mucho. Lee con atención el mensaje original y verás que es muy sencillo generar un libro de claves. Salu2. Antoni.
  3. Hola verzulsan: Me parece que también voy a tener que pasarme a Excel 2007. Como parece que te interesa el tema de la encriptación, te adjunto un encriptador/descifrador de mensajes desarrollado por mi. Puede encriptar cualquier carácter, mayúsculas y minúsculas, acentuadas o no, números, caracteres especiales, espacios,...... Se adjuntan 2 libros en el zip: El libro de claves, se entrega vacio, porque pesa bastante (8Mb), por lo que lo primero es generarlo. Abrirlo, pulsar sobre "Top secret" y esperar un par de minutos, luego salvar el libro con el nombre que querais. Podeis generar tantos libros de claves como querais, ya que podreis elegir cualquiera de ellos en el momento de cifrar el mensaje. Cada libro de claves, tiene 9 claves, cada clave 256 códigos, y cada código 256 caracteres. Cada carácter, es un número hexadecimal entre 0 y 255. El código se asigna por el resto módulo 256 que corresponde a la posición en el texto. La clave es con un número aleatorio de 1 a 9 que corresponde a la hoja que contiene la clave. El nombre de las hojas que contienen cada una de las 9 claves, es un número de ocho cifras en la que cada cifra es un número aleatorio entre 0 y 9 que se asigna al generar el libro de claves. En el mensaje cifrado, las 8 primeras posiciones, corresponden a la clave usada para poder utilizarla luego en el descifrado. El otro libro de la entrega es el encriptador. Tiene 3 funciones: .Encriptar, solicitará el libro de claves (1ª vez) a utilizar y encriptará el mensaje de "A1" .Descifrar, solicitará el libro de claves (1ª vez) a utilizar y descifrará el mensaje de "A1" en "A2" .Activar cambio de claves, hace que la próxima vez que pulsemos Encriptar/Descifrar nos pida el fichero de claves a utilizar. Importante: El nombre del libro de claves no se guarda con el mensaje cifrado, por lo que debemos recordar con que libro de claves hemos cifrado el mensaje para poder luego descifrarlo. Salu2 a to2.....to2. Antoni. PD: ¡¡¡ Viva er Beti manque pierda !!! ENIGMA.zip
  4. Hola: Dando por supuesto que la contestación a todas mis afirmaciones van a ser que si, te paso la macro que lo hace. Recuerda adecuar los nombres de libros y hojas. Las filas con diferencias serán resaltadas en amarillo y las celdas en rojo y en negrita, en ambos libros. Dim A, B As Worksheet Sub CompararLibros() Workbooks.Open "C:\LibroA.xls"' Workbooks.Open "C:\LibroB.xls" Set A = Workbooks("LibroA.xls").Sheets("Hoja1") Set B = Workbooks("LibroB.xls").Sheets("Hoja1") For x = 1 To A.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For y = 1 To A.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column If A.Cells(x, y) <> B.Cells(x, y) Then A.Rows(x).Interior.Color = vbYellow A.Cells(x, y).Font.Color = vbRed A.Cells(x, y).Font.Bold = True B.Rows(x).Interior.Color = vbYellow B.Cells(x, y).Font.Color = vbRed B.Cells(x, y).Font.Bold = True End If Next y Next x Workbooks("LibroA.xls").Save Workbooks("LibroA.xls").Close Workbooks("LibroB.xls").Save Workbooks("LibroB.xls").Close End Sub [/CODE] Salu2. Antoni.
  5. Hola: Confírmame si es cierto lo siguiente: 1) Los dos libros solo tienen una hoja a analizar. 2) La hoja a analizar, en los dos libros, tienen el mismo número de filas. 3)Hay que comparar todas las celdas del rango una a una, y fila a fila, es decir, comparar la celda A1 de un libro con la celda A1 del otro libro, la B1 con la B1, la C1 con la C1,...... y así con todas la columnas y todas las filas. 4)Marcar las celdas y las filas con diferencias. Si no es así, aclara como se debe haces el emparejamiento para encontrar las diferencias. Salu2. Antoni.
  6. Yo también me alegro de saludarte. Salu2. Antoni.
  7. Hola: Aunque un poco tarde, ahí va un formulario que permite abrir archivos jpg, pdf, doc y xls de cualquier directorio. Seguramente tendrás que cambiar el camino del ejecutable que permite abrir los archivos pdf. Salu2. Antoni. Visualizador de archivos.zip
  8. Hola Jordi: Si no recuerdo mal "Kill" forma parte de un conjunto de instrucciones del Basic original de MSDOS, antes de la aparición de Windows. Es que soy muy antiguo, soy de antes de los PC's, de cuando los ordenadores ocupaban habitaciones enteras y su capacidad se medía en Kbytes. ja,ja,ja.... Salu2. Antoni.
  9. Hola: A ver si así lo ves mas claro. Salu2. Antoni. MINIMIZAR FORMULARIO.zip
  10. Hola: Para cada check: Private Sub CheckBox1_Click() If CheckBox1_Click = True Then Rows(ActiveCell.Row).Copy Sheets("SELECCION").Rows(5) Sheets("SELECCION").Rows(5).Insert Exit Sub End Sub [/CODE] Salu2. Antoni.
  11. Hola: Para visualizar un gráfico en un formulario, no se me ocurre otra forma que la de cargar la imagen del gráfico en un control Image. Supongo que la decisión de utilizar un formulario obedece a la necesidad de recoger información proporcionada por el usuario para la elaboración del gráfico. Dando por sentado este supuesto, una solución que se me ocurre es, mostrar el gráfico real, de esta forma al posicionarse sobre los puntos se verían los valores de los ejes, y minimizar el formulario en el momento de visualizar la hoja que contiene el gráfico. Espero haberte dado una idea valida para solucionar tu problema. Salu2. Antoni. PD. ¿ Existe algún control ActiveX que sirva para elaborar gráficos en un formulario ? Dejo la pregunta en el aire por si alguien lo sabe.
  12. Hola: La información en excel esta en celdas (eso ya lo sabes) y funciona como el juego de los barcos, es decir, para referirinos a una celda hemos de indicarle las coordenadas, supongamos que queremos cambiar una celda de la hoja activa basta con: Cells(Fila, Columna) = TextBox1[/CODE] Si queremos referirnos a una celda que está en otra hoja, hemos de decirle en que hoja está [CODE]Sheets("Reporte").Cells(Fila, Columna) = TextBox1[/CODE] Y si la celda está en una hoja de otro libro, primero abrimos el libro y le decimos que libro es [CODE]WorkBooks.Open "C:\OtroLibro.xls" WorkBooks("OtroLibro.xls").Sheets("Reporte").Cells(Fila, Columna) = TextBox1[/CODE] Y ya por último, una celda combinada es como una celda normal y se direcciona por la primera celda, si tenemos una celda combinada que va de la fila 1, columna 3 a la fila 5, columna 7, para pasarle un valor sería [CODE]Sheets("Reporte").Cells(1, 3) = TextBox1[/CODE] Salu2. Antoni.
  13. Hola IMA: Te adjunto un módulo con la macro que hace (creo) lo que pides. Debes importar el módulo en tu proyecto. Al final he añadido los registros inmediatamente después del primer registro de cada factura. Los registros añadidos se resaltan en verde para poder hacer comprobaciones, si quieres quitalo. Salu2. Antoni. Módulo_IMA.zip
  14. Hola: Para eliminar el archivo: Kill "X:\B.xls"[/CODE] Vale para cualquier archivo. En tu caso, el libro debe haberse cerrado previamente: [CODE]WorkBooks("B.xls").Close[/CODE] Salu2. Antoni.
  15. Hola: Te envío una nueva versión de la macro. La contraseña es PASSWORD. Salu2. Antoni. Copia(2) de MACRO TIEMPO.zip
  16. Modifica: Modificamos las celdas para sustituir 1 comilla simple por 2 comillas simples, de esta manera ADO interpreta que no se trata de un campo nuevo. 'Construimo sentencia INSERT For y = 1 To 40 H.Cells(x, y) = Replace(H.Cells(x, y), "'", "''") Next y [/CODE] Ponemos el indicador de salvado del fichero a verdadero para que no muestre el mensaje de ¿Quiere guardar los cambios? ocasionado por haber modificado las celdas que contienen comilla simple. [CODE] MsgBox "*** Se cancela la totalidad del traspaso ***", vbCritical, "Traspaso del libro " & L Workbooks(Fichero.Name).Saved = True 'Eliminamos mensaje de guardar <====== AÑADIDO Workbooks(Fichero.Name).Close 'Cerramos libro CONEXION.RollbackTrans 'Abortamos transacción CONEXION.Close 'Cerramos la conexión GoTo Siguiente End If Next x Workbooks(Fichero.Name).Saved = True 'Eliminamos mensaje de guardar <====== AÑADIDO Workbooks(Fichero.Name).Close 'Cerramos libro CONEXION.CommitTrans 'Guardamos cambios en la base de datos CONEXION.Close 'Cerramos la conexión End If Siguiente: [/CODE] Salu2. Antoni. PD. No puse el control de comilla simple desde el principio porqué en la base de datos que enviaste no había campos de texto.
  17. Hola: Se me olvidó, ¿Puedo suponer que la hoja "VENTAS" está ordenada por FACTURA, y si no lo está, puedo ordenarla, y si es así cual sería el criterio por el que ordenar después de FACTURA?, y ya que estamos ¿El campo PRODUCTO, se ha de partir en MATERIAL y CECO-SAP? ¿En los registros añadidos, IVA y TOTAL van a CERO?. Salu2. Antoni.
  18. Hola: Hola te envío de nuevo la macro. Procesará todos los archivos.xls que encuentre en el directorio desde donde se ejecute la macro. De cada archivo, seleccionaremos la primera hoja con independencia del nombre que tenga. Salu2. Antoni. EXCEL A ACCESS II.zip
  19. Hola: Salvo que alguien me corrija, lo que quieres no tiene mucho sentido, me explico. El nivel de seguridad de las macros es algo independiente del libro que estás abriendo. Para cerrar el libro necesitamos una macro, y si las macros están deshabilitadas previamente, no se ejecutará. Piensa que simplemente manteniendo la tecla Shift(Mayúsculas) apretada al abrir el libro, no se ejecutan las macros asociadas al evento WorkBook_Open en ThisWorkBook. Si lo que tu pretendes es que no se pueda ver la información con las macros deshabilitadas 1) Crea una hoja con el nombre "Warning" (Por ejemplo), con un texto que ponga algo parecido a "Para acceder a la información debe habilitar las macros" 2) Oculta las hojas, excepto "Warning", antes de grabar y cerrar el libro, y visualizalas al abrir. Si se han deshabilitado las macros, solo se vera la hoja "Warning" con el mensaje de advertencia. Mira el siguiente enlace: https://www.ayudaexcel.com/foro/showthread.php?t=11852 Salu2. Antoni.
  20. Re: exportar datos desde texto, el nombre del archivo de texto se extrae de una celda Hola: Quiero imaginarme que cuando hablas de otro libro, te estás refiriendo realmente a otra hoja, la "Hoja3", si es así: "TEXT;Z:\software_proyectos\bd\proyectos\" & Sheets("Hoja3").Cells(1, 3) & ".dat", _ Destination:= Range("$B$1")) .Name = Sheets("Hoja3").Cells(1, 3)[/CODE] Si la "Hoja3" está en otro libro (otro .xls), hace falta el nombre y la ruta completa del mismo para poder abrirlo. Salu2. Antoni
  21. Te cuento: Me he permitido la libertad de "aligerarte" un poco el código, a la vez le he puesto nombres a los botones para que sea mas fácil seguirlo. No es necesario repetir los tratamientos en cada evento, defines un procedimiento que contenga dicho tratamiento, y lo invocas desde cualquier otro. (Observa el borrado de los textbox del formulario. Procedimiento LIMPIAR_Click). Tienes un problema con el formato de los campos numéricos a la hora de pasarlos a las celdas ya que los textbox, por definición, tienen formato de texto con lo que hay que convertirlos, que pasa, que al convertirlos si el contenido no es numérico nos da error de conversión (El famoso "No coinciden los tipos"). Te he validado uno de esos campos numericos: Private Sub TextBox13_Change() Rem mensualidad del mes de enero HayErrores = False If TextBox13 <> Empty Then If IsNumeric(TextBox13) = True Then Range("M" + Label28) = CCur(TextBox13) Else MsgBox "Este campo debe ser numérico.", vbCritical, "Mensualidad enero" TextBox13 = Range("M" + Label28) HayErrores = True End If End If End Sub [/CODE] Pues así con el resto de los 84 que hay. Dado la gran cantidad de textbox que tienes(97), he utilizado la colección Controls para evitar el tener que escribir 97 líneas de código cada vez que queramos hacer algo con el formulario. Lamentablemente, no es posible utilizar esta técnica con los eventos, por lo que no queda mas remedio que escribir todos los eventos Change de los textbox. Ya te irás dando cuenta que este sistema de introdución/actualización de datos que has planteado no es el mas idóneo, pero para empezar, no está mal, y te servirá para completar la aplicación y coger experiencia. Salu2. Antoni. CONTROL DE MANTENIMIENTOS Y CLIENTES 2010 II.zip
  22. Re: Abrir varios libros teniendo formulario abierto Hola: En primer lugar debo hacer una corrección, debe ser: Workbooks("MiLibro.xls").Sheets("MiHoja").[/CODE] en lugar de [CODE]Workbooks("C:\MiLibro.xls").Sheets("MiHoja").Cells(x, y)[/CODE] Ahora vamos a hacer unas aclaraciones: Un libro solo se puede abrir una vez, incluso después de terminar la macro, por lo que debes asegurarte que antes de volver a abrirlo esté cerrado. Yo lo abriría/cerraría en la propia macro. [CODE]Sub MiMacro() Workbooks.Open "C:\MiLibro.xls" 'Abre el libro '... '... Código de la macro '... Workbooks("MiLibro.xls").Save 'Salva los cambios Workbooks("MiLibro.xls").Close 'Cierra el libro End Sub [/CODE] En relación a la otra pregunta, efectivamente hay que calificar cualquier referencia a celda, rango,etc,.. con el libro y hoja del que se trata, en nuestro caso, si queremos referirnos la celda de la fila 4, columna 5, de la hoja "Mi Hoja", del libro "MiLibro" hemos abierto, sería: [CODE]Workbooks("MiLibro.xls").Cells(4, 5)[/CODE] Evidentemente es un engorro tener que anteponer ese calificativo delante de cada objeto, por eso Excel nos provee de varias maneras de evitarlo, la que yo prefiero, consiste en asignar el calificativo a una variable: [CODE]Dim Hoja As Worksheet Set Hoja = Workbooks("MiLibro.xls").Sheets("MiHoja") [/CODE] A partir de ahí, podemos referirnos a la hoja "Mi Hoja", del libro "MiLibro" , simplemente como Hoja. Ejemplo de como quedaría una macro para poner "MiCelda" en la celda 4 de la columna 5 de la hoja "Mi Hoja", del libro "MiLibro". [CODE]Sub MiMacro() Dim Hoja As Worksheet 'Define la variable Hoja como hoja Excel Workbooks.Open "C:\MiLibro.xls" 'Abre el libro Set Hoja = Workbooks("MiLibro.xls").Sheets("MiHoja") 'Asigna "MiHoja" a la variable Hoja Hoja.Cells(4, 5) = "MiCelda" Workbooks("MiLibro.xls").Save 'Salva los cambios Workbooks("MiLibro.xls").Close 'Cierra el libro End Sub [/CODE] Salu2. Antoni.
  23. Re: exportar datos desde texto, el nombre del archivo de texto se extrae de una celda Prueba: "TEXT;Z:\software_proyectos\bd\proyectos\" & Cells(1, 3) & ".dat", Destination:= _ Range("$B$1")) .Name = Cells(1, 3) [/CODE] Salu2. Antoni.
×
×
  • Create New...

Important Information

Privacy Policy