martes, 31 de enero de 2017

Cargar un complemento Excel al abrir

Cargar un complemento Excel para un único libro

Abra un libro ...guárdelo como .xlsm (libro habilitado para macros)

Presione Alt + F11 para ver el Editor de VBA.
Haga doble clic en el objeto "Thisworkbook" en el Explorador de proyectos.

Coloque las siguientes macros en la ventana de código:

Ubique el evento Workbook_BeforeClose y coloque el siguiente código…para que el add-in se desinstale cuando cierras Excel.

Private Sub Workbook_BeforeClose ()
    AddIns ("NombreDeTuAddin"). Installed = False
End Sub

Ahora ubica el evento Workbook_Open y coloque el siguiente código…para que el add-in se instale al abrir el libro.


Private Sub Workbook_Open ()
    AddIns (NombreDeTuAddin"). Installed = True
End Sub

.
Cierre el Editor de VBA.

Guarde su libro xlsm (libro habilitado para macros)


jueves, 19 de enero de 2017

Excel VBA: Rangos en Excel


'Mediante las siguientes instrucciones podrá manipular y seleccionar rangos en Excel

Sub rangos_excel_vba()

'seleccionar celdas

'celda a1 o 1,1

'A1 con la direccion de la celda
Range("A1").Select

'A1..haciendo referencia a la posicion fila,columna
Cells(1, 1).Select

'Seleccionar columna entera
Range("A:A").Select

Range("A4:A10,D10,F5:F16").Select
Range("A4:A10,D10,F5:F16").Interior.ColorIndex = 9

'columna discontinua
Range("A:A, D:M").Select

'fila entera
Range("5:5").Select

'filas discontinuas
Range("1:1, 3:10").Select


End Sub





jueves, 5 de enero de 2017

Excel VBA: Operaciones con el objeto Application Excel

'Mediante las siguientes instrucciones podras operar con el objeto aplicación de Excel

'El nombre del usuario de Excel
?Application.UserName
Jesus


'La ruta de Excel
?Application.Path
D:\AppData_temporal\Win7\Office2016_64\Office16


'Procesar un string con evaluate
?Application.Evaluate("55+88")


'Contar los Addins instalados
?Application.AddIns.Count
 4


'Contar los ComAddins instalados
?Application.COMAddIns.Count
 12


'Verificar el tipo de calculo ..manual o auto,etc
?Application.Calculation
-4105


'verificar la actualizacion de pantalla
?Application.ScreenUpdating
Verdadero


'la ruta por defecto de las plantillas
?Application.TemplatesPath
C:\Users\Jesus\AppData\Roaming\Microsoft\Plantillas\


'la ruta por defecto de complementos
?Application.UserLibraryPath
C:\Users\Jesus\AppData\Roaming\Microsoft\Complementos\


'nombre de la aplicacion
?Application.Name
Microsoft Excel


'Separador de rutas como C:\...D:\,etc
?Application.PathSeparator
\

'La version de Excel ...en este caso Excel 2016
?Application.Version
16.0

'El sistema operativo---y si es de 32 o 64 bits
?Application.OperatingSystem
Windows (64-bit) NT 6.01





miércoles, 21 de diciembre de 2016

Excel VBA Macro: Optimizar Macros en Excel II

-Con Menos código la macro se ejecutara más rápido siendo más fácil de entender y modificar. Sera más rápida de ejecutar y mejora la experiencia del usuario.

-Analiza la lógica antes de programar

-Usar la instrucción WITH para resumir el código además de que esto facilita cambios.

-Evitar la instrucción. SELECT casi nunca es necesario para operar en algún objeto.

-Evitar loops tal vez alguna función incorporada del Excel o el VBA ya hace lo que buscas...
no traten de reinventar la pólvora…sobre todo porque no se ejecutará más rápido que una
función nativa .

Usar Option Explicit al inicio de los módulos para obligar a declarar las variables.


Evitar el uso de Variant.

martes, 13 de diciembre de 2016

Excel Vba Macro: Optimizar Macros En Excel


Una primera medida puede ser desactivar la actualización de pantalla 
...en las primeras líneas

 Application.screenupdating=False
No debes olvidar colocarlo en True al finalizar el procedimiento
 Application.screenupdating=True

Apagar los eventos automáticos
Lo hacemos con la instrucción: 
Application.EnableEvents=False
Evita ejecutar macros de evento

Apagar visualización de saltos de página
Lo hacemos con la instrucción: ActiveSheet.DisplayPageBreaks = False
Esto  evita problemas entre macros Excel 2003 vs. 2007/2010



Sub Macro_Jes_Test

'Así debiera comenzar tu macro
Application.screenupdating=False

Application.calculation=xlCalculationManual
Application.EnableEvents=False

'Code ccc
Code ddd
'Code eee

'Así  debiera  finalizar

Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=true

End Sub

martes, 6 de diciembre de 2016

Proteger y Desproteger Hojas VBA - Excel


'La siguiente macro permite proteger y desproteger todas las hojas de un libro

Const myClave = "MyClave123"

'for each
'Protect---> clave
'unprotect--->clave
'...

'excel vba macro:proteger todas las hojas
Sub protegerHojas()

Dim sht As Worksheet

For Each sht In Sheets

sht.Protect Password = myClave

Next

End Sub

'excel vba macro:Desproteger todas las hojas
Sub DesprotegerHojas()

Dim sht As Worksheet

For Each sht In Sheets

sht.Unprotect Password = myClave

Next

End Sub



lunes, 28 de noviembre de 2016

Excel VBA - Usar Compare Text

Usar compare text

Incluya la Opción compare text en la parte superior de cada módulo
para comparar texto sin importar las mayúsculas o minúsculas
*El valor por defecto diferencia entre mayúsculas y minúsculas

Al comparar el valor de una celda hará diferencia entre  “YES”, o “Yes” o “YeS”.

Por defecto en VBA las comparaciones son binarias. Ósea, "sí" ≠ "Sí

De igual forma podrías colocar Ucase  al  valor de la celda a comparar. Así tenemos los 2 valores en mayúsculas.

If UCASE(Target. Value) = "SI" Then

'hacer esto

End if

De todas formas me parece, más simple colocar

Option Compare Text


en la primera línea de cada módulo