for ejemplos descargar code excel vba excel-vba

ejemplos - vba excel descargar



¿Existe una solución táctica(leer "piratear") para evitar tener el código VBA y la hoja de Excel como un archivo binario? (6)

Creo que en comparación con las alternativas (es decir, la reconstrucción constante de los archivos del libro de Excel) sería mucho menos complicado pasar a VSTO o COM Addins, usando VBA para el trabajo de creación de prototipos ligeros. También obtienes el beneficio adicional de no tener código fuente fácilmente "pirateable" (es decir, necesitas más que adivinar la contraseña del proyecto VBA)

Como lo entiendo cuando creo una hoja de Excel con código VBA, el código VBA se guarda como binario con la hoja. Por lo tanto, no puedo poner el código en el control de la fuente de una manera útil, tener múltiples desarrolladores trabajando en los problemas, diferir es difícil, etc.

¿Hay una forma de evitar esto sin cambiar a VSTO, COM complementos, etc.? Por ejemplo, para la hoja en la que se carga, todo es VBA en tiempo de ejecución desde un servicio web, disco compartido, etc. Cualquier idea apreciada.

Gracias.


Escribí un tipo de sistema de compilación para Excel que importa el código VBA de los archivos fuente (que luego se pueden importar al control de fuente, diferido, etc.). Funciona al crear un nuevo archivo de Excel que contiene el código importado, por lo que podría no funcionar en su caso.

La macro de compilación se ve así, la guardo en un archivo llamado Build.xls:

Sub Build() Dim path As String path = "excelfiles" Dim vbaProject As VBIDE.VBProject Set vbaProject = ThisWorkbook.VBProject ChDir "C:/Excel" '' Below are the files that are imported vbaProject.VBComponents.Import (path & "/something.frm") vbaProject.VBComponents.Import (path & "/somethingelse.frm") Application.DisplayAlerts = False ActiveWorkbook.SaveAs "Output.xls" Application.DisplayAlerts = True Application.Quit End Sub

Ahora, las cosas de VBIDE significan que tienes que importar una referencia llamada "Microsoft Visual Basic para Extensibilidad de Aplicaciones 5.3", creo.

Por supuesto, todavía tienes el problema de tener que iniciar Excel para compilar. Esto se puede solucionar con un pequeño script VB:

currentPath = CreateObject("Scripting.FileSystemObject") _ .GetAbsolutePathName(".") filePath = currentPath & "/" & "Build.xls" Dim objXL Set objXL = CreateObject("Excel.Application") With objXL .Workbooks.Open(filePath) .Application.Run "Build.Build" End With Set objXL = Nothing

Ejecutar el script anterior debería iniciar el archivo Excel de compilación que genera la hoja resultante. Probablemente tengas que cambiar algunas cosas para que se pueda mover en el sistema de archivos. ¡Espero que esto ayude!


Interesante pregunta ... también tenemos un problema con el control de código fuente de VBA pero nunca lo hemos solucionado.

¿Este artículo de Microsoft KB coincide con sus criterios? El código se coloca en un archivo .BAS que puede estar en una ubicación arbitraria (y separada de .xls).

Como dije, nunca he intentado hacer esto, pero parece que este podría ser un enfoque.


Recomiendo encarecidamente no intentar cargar el VBA en tiempo de ejecución. La automatización VBIDE es escamosa en el mejor de los casos y creo que se encontrará con muchos dolores de cabeza de mantenimiento y soporte.

Mi solución a esto fue exportar el código peridocally para el control de fuente como archivos de texto. También eliminaría todo el código de xls (eliminación completa de Formularios, Módulos y Módulos de clase y eliminación de código en los módulos Hoja de trabajo y Libro de trabajo) y pondría solo este ''apéndice'' xls en control de fuente.

Una reconstrucción desde el control de la fuente consistiría en tomar los ''stub'' xls, importar todos los formularios, módulos de clase y módulos y copiar y pegar en todo el código en los módulos Hoja de trabajo y Libro de trabajo.

Si bien este fue un proceso doloroso, sí permitió un control de código fuente adecuado con todas las capacidades habituales de diferir, bifurcar, etc. Lamentablemente, la mayor parte era manual. Escribí un complemento que automatizaba parte de esto, pero fue solucionado rápidamente, es decir, bastante defectuoso y requiriendo intervención manual. Si vuelvo a revisarlo y ponerlo a punto, te lo haré saber ;-)


También aconsejo no cargar en el tiempo de ejecución y buscar una utilidad de estilo make . Después de todo, si su código está bajo control de fuente, entonces solo debería actualizar sus libros de trabajo después de una confirmación.

Desafortunadamente, no hay tal utilidad, o al menos no una que pueda encontrar.


El camino más corto hacia adelante es usar el complemento SourceTools.xla desde http://www.codeproject.com/KB/office/SourceTools.aspx

Otro enfoque es escribir una herramienta similar utilizando enlaces COM a su lenguaje de programación favorito. Un colega capaz creó uno en Python que podía exportar todo, incluido el código VBA, el contenido de la hoja de trabajo y las fórmulas, e incluso las referencias de VBA en archivos de texto, y podía ensamblar un libro de trabajo en funcionamiento. Eso fue antes del formato XLSX también.