Saltar al contenido

QUE NO CAMBIEN LA EXTENSION DE MIS ARCHIVOS EXCEL


wilmervera

Recommended Posts

publicado

saludos... quisiera saber si es posible evitar que algún malintencionado cambie la extensión de mis archivos excel (xlsx, xlsm, xlam, etc.) ya que me paso que cambiandolo a archivo.zip pudieron abrir el vbaProject.bin con un editor hexadecimal y así deshabilitaron la contraseña del proyecto y tuvieron acceso a todo mi trabajo, con lo que me ocasionaron un grave perjuicio. O si no, que medidas de seguridad (a mas de las ya conocidas como contraseñas de acceso y escritura) puedo tener para que no plagien mi trabajo. gracias por la respuesta 

 

publicado

Olvídalo @wilmervera cuando uno programa sobre VBA/Excel se debe estar consciente que muy difícilmente se puede proteger al 100% el código. Yo por lo menos se tres maneras de crakear el código de una macro.

Lo se si podrías hacer es quizás ofuscar el código VBA para hacerle un poco mas difícil la lectura aquellos que accedan a tu 
código. Si quieres mas protección tendrás que usar otro lenguaje de programación que te genere ejecutables.

Saludos!

  • 3 weeks later...
publicado

No quiero meterme mucho en esto @wilmervera , porque mi antigua afición por el cracking (:rolleyes:) se quedó muuuuy atrás, pero si VB no ha cambiado mucho, incluso sus ejecutables eran de lo más sencillo de crackear (contraseña, timecheck, etc, etc)

Y no mucho menos cualquier ejecutable de cualquier lenguaje, solo con un buen depurador de código máquina y un poco de paciencia.... :o

Lo mejor siempre fue los compresores de ".exe", que encriptaban código al desensamblar, eliminaban líneas o las confudían, etc. Pero ya digo que hace muuuucho de esto.

En todo esto de la ingeniería inversa, según avanzan los métodos de protección, avanzan las técnicas de crackeo. Es como una pescadilla que se muerde la cola.

Te aconsejaría que lo pusiese lo más difícil posible, siempre que el agresor no sea muy hábil,. Pasarse al código libre es otra opción (:)), pero eso depende de lo que cada uno pretenda obtener.

publicado

Hola a todos:

Creo que si se usa Excel y VBA hay que ser conscientes de que los niveles de seguridad del código/módulos no es la mejor; claro, eso tampoco significa que sea mala y en general, desde mi punto de vista, el usuario promedio no sabrá como "romper" ciertas contraseñas o birlar ciertas medidas de seguridad. Una "mezcla" de varias de ellas puede resultar al menos "algo" difícil  en general: Usar complementos, usar siempre la contraseña del proyecto VBA, proteger hojas y/o el libro, etc. Como comento, los usuarios promedio no podrán con eso.   Aunque yo en general, cuando uso VBA, no lo protejo, personalmente no tengo problema en que lo vean y claro, si de algo de trabajo se tratase,  cuando he hecho algo para otros, dejo en ellos la decisión de protegerlo. 

Sobre qué puede ser útil, claro, una opción que no convierte en ejecutable y que permite seguir manejando el archivo de Excel como tal, es no usa VBA, sino VSTO. De ese modo los códigos usados no puede ser vistos de ningún modo. Claro, eso involucra que se tenga que "instalar" el archivo para poder usarlo, aunque ese proceso de instalación es básicamente registrar (de forma automática) las librerías, objetos ActiveX,  etc., que usará el archivo Excel.

Saludos

Abraham Valencia

publicado

Ya lo han dicho dos expertos... @Haplox y @avalencia olvidate de la protección @wilmervera!!! Lo único posible es como se dijo complicar las cosas para que al supuesto ladrón de códigos le tome tiempo el crakeo.

Quieres mayor protección? Programa en lenguajes que generen un ejecutable o programa aplicaciones web.

Saludos!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
    • Podrías compartir tu solucion
    • Alguien me apoya a cerrar este tema,  ya lo solucioné Gracias
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.