Archive

Archive for the ‘Trucos’ Category

EXCELeINFO addin 2.4.0 – Visualizar Configuración regional y de idioma desde Excel con Application.International

December 1, 2012 1 comment

Hace días me hice la pregunta: Para qué ir al Panel de control para ver mi configuración de regional ? Por ejemplo, qué separador de listas tengo configurado, qué idioma tengo configurados, qué formato de fecha tengo.

Me di a la tarea de comprender el funcionamiento de la propiedad International del objeto Application, y me di cuenta que es más sencillo de lo que podría parecer.

Si por ejemplo, queremos saber el símbolo de moneda que maneja nuestro Excel, sólo ejecutamos:

Sub Moneda()
MsgBox Application.International(xlCurrencyCode)
End Sub

Imagen del addin

image

image

Listado de configuraciones que muestra el addin

Configuración de país o región

Constante Significado

xlCountryCode

Versión de país o región de Microsoft Excel.

xlCountrySetting

Configuración actual de país o región en el Panel de control de Windows.

xlGeneralFormatName

Nombre del formato numérico General.

Moneda

Constante Significado

xlCurrencyCode

Símbolo de moneda.

xlCurrencyDigits

Número de decimales que van a utilizarse en los formatos de moneda.

xlNoncurrencyDigits

xlNoncurrencyDigits

Fecha y hora

Constante Significado

xl24HourClock

Muestra si el formato de hora que se utiliza es de 24 horas o si es de 12 horas.

xlDateOrder Orden de los elementos de la fecha.

xlDateSeparator

Separador de fecha (/).

Separadores

Constante Significado

xlDecimalSeparator

Separador decimal.

xlListSeparator

Separador de lista.

xlThousandsSeparator

Separador de miles o cero.

:: Descargar EXCELeINFO add-in 2.4.0

Crear categoría y descripción para funciones personalizadas UDF en Excel

November 24, 2012 8 comments

En un artículo del 2010 explicaba cómo Crear funciones personalizadas en Excel y tener nuestras propias funciones escritas por nosotros mismos.

En esta ocasión comparto un código en vba que nos permitirá crear una categoría personalizada y agrupar nuestras UDF’s (User Define Function), así como darles una descripción a los argumentos que tendrán y a la misma función.

Tendremos 3 partes principales para tener la categoría y las descripciones de la función:

  1. Mandar llamar la función desde el evento Open del archivo.
  2. El código que asignará los elementos de la función.
  3. El código de la función.

Código

En el evento Open del objeto ThisWorkbook asignamos el código siguiente.

Private Sub Workbook_Open()
    Call DescribeFunctionEXCELeINFOCOLORCELDA
End Sub

En un módulo normal.

'El código que describe la categoría de la función y sus argumentos
Private Sub DescribeFunctionEXCELeINFOCOLORCELDA()
    Dim NombreFunc As String        'nombre de la función
    Dim DescFunc As String          'descrición de la función
    Dim Categoria As String         'categoría de la función
    Dim DescArg(1 To 3) As String   'descripción de los argumentos
    '
    NombreFunc = "EXCELeINFOCOLORCELDA"
    DescFunc = "Devuelve el índice de color de la celda seleccioada"
    Categoria = "EXCELeINFO"    'Text category
    DescArg(1) = "Es la celda de donde se obtendrá el índice de color"
    '
    Application.MacroOptions _
            Macro:=NombreFunc, _
            Description:=DescFunc, _
            Category:=Categoria, _
            ArgumentDescriptions:=DescArg
End Sub
'
'Función personalizada UDF
Function EXCELeINFOCOLORCELDA(celda As Range)
'
' EXCELeINFOCOLORCELDA Función
' Devuelve el color de la celda de la celda seleccionada
'
    EXCELeINFOCOLORCELDA = celda.Interior.ColorIndex
    '
End Function

Imágenes

image

image

Guardar archivo de Excel solo si se ingresa contraseña

November 19, 2012 4 comments

En el artículo llamado Macro para impedir que se guarde un archivo de Excel exponíamos una macro que no te permitía guardar cambios en un archivo ni guardar una copia del mismo.

El código tiene la debilidad de que si queremos, como creadores, guardar cambios que no querramos que otros modifiquen, debíamos deshabilitar macros para hacer los cambios y luego volver a habilitarlas.

La mejora

Mediante la función InputBox lanzamos un diálogo que nos permite introducir una contraseña, y sólo si ingresamos la adecuada, nos permitirá guardar cambios o guardar una copia.

Código

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Pass = "12345"
    Confirma = InputBox("Escribe una contraseña para continuar.", _
        "EXCELeINFO - Guardar")
    If Confirma = Pass Then
    Else
        MsgBox "No tienes permitido guardar el archivo.", vbCritical, _
            "EXCELeINFO"
        Cancel = True
    End If
End Sub

Animación de la macro en ejecución

guardar archivo de Excel solo si se ingresa contraseña

Pedir confirmación antes de ejecutar una macro en Excel

November 15, 2012 2 comments

Cuando escribimos una macro, siempre lo hacemos a conciencia y sabiendo los cambios que hará, pero para el usuario final, siempre debemos dejarle la decisión de aplicar los cambios o no.

Pareciera algo contradictorio, pero para cualquier aplicación, siempre es recomendable enviar un aviso informando al usuario que está a punto de ejecutar una acción y lo dejamos a su consideración.

El siguiente código, dentro de su simpleza contiene la lógica de decidir si sí o no continuamos la ejecución de la macro.

Cómo funciona

Primeramente asignamos una variable llamada Resp que es la que almacenará el resultado de la clase MsgBox, cuyos  valores serán Si o No (vbYes, vbNo).

La lógica del código es:

Si Resp es igual a SI, entonces ejecuta el código

Sino

Muestra un mensaje o ejecuta otro código

Código de la macro

Sub Confirmar()
Dim Resp As Byte
Resp = MsgBox("Deseas continuar con la ejeción de la macro?", _
    vbQuestion + vbYesNo, "EXCELeINFO")
If Resp = vbYes Then
    MsgBox "Se eligió continuar...", vbExclamation, "EXCELeINFO"
    'Aquí se ejecutaría el código
Else
    MsgBox "Se eligió cancelar...", vbCritical, "EXCELeINFO"
End If
End Sub

Animación de la macro en ejecución

Pedir confirmación antes de ejecutar

Categories: Excel, Macros, Trucos Tags: , , ,

Crear fórmulas Excel con macros independientemente del idioma o separador de argumentos, coma o punto y coma

November 8, 2012 2 comments

Cuando queremos insertar fórmulas en Excel mediante macros, nos encontramos con 2 disyuntivas:

  1. Usar el nombre de la función mdiante lenguaje vba, es decir, su parte en inglés que sea compatible con cualquier Excel en cualquier idioma.
  2. Escribir la fórmula en nuestro propio lenguaje, cual sea que este fuera, adecuando el separador de argumentos: coma (,) o punto y coma(;), pero sólo compatible con otro Excel en nuestro idioma

Insertar fórmulas mediante vba aplicables a Excel en cualquier idioma

Supongamos que necesitamos insertar en una celda la función BUSCARV desde vba. Si esta macro se utilizará en otras versiones de Excel con diferentes idiomas al que usamos, lo mejor será usar los nombres en inglés.

Desde vba usamos la propiedad FORMULA del objeto RANGE:

Range("F6").Formula = "=VLOOKUP(E6,A1:B12,2,0)"

Insertar fórmulas mediante vba aplicables a nuestro idioma

La misma función BUSCARV la deseamos escribir desde vba en nuestro mismo idioma. Para eso debemos hace uso de la propiedad FORMULALOCAL del objeto RANGE.

Range("F6").FormulaLocal = "=BUSCARV(E6,A1:B12,2,0)"

El caso del separador de argumentos cuando es coma o punto y coma

El separador de listas o argumentos varía dependiendo de la configuración regional de nuestro sistema. Por ejemplo, es coma cuando la cofiguración es el Español y punyo y coma cuando la configuración en el inglés. Pero como no nos interesa escribir fórmulas para cada tipo de región, mejor hacemos uso de la propiedad INTERNATIONAL del objecto APPLICATION, para meter a una variable el separador que nos detecte Excel.

Para obtener el separador de argumentos configurado en el Panel de control usamos la siguiente instrucción:

Application.International(xlListSeparator)

Y si dejamos el separador como variable, las instruccones quedarían así:

'Obtener el separador de argumentos
Separador = Application.International(xlListSeparator)
'Para fórmula multi idioma
Range("F6").Formula = "=VLOOKUP(E6" & Separador & "A1:B12" & Separador & _
    "2" & Separador & "0)"
'Para fórmula en nuestro idioma
Range("F6").FormulaLocal = "=BUSCARV(E6" & Separador & "A1:B12" & Separador & _
    "2" & Separador & "0)"

EXCELeINFO add-in: mover archivo activo de carpeta sin necesidad de cerrarlo

November 4, 2012 5 comments

En más de una ocasión es necesario que el archivo que tenemos abierto lo necesitamos mover de carpeta. Aunque este proceso puede reducirse a Cerrar, ir al Explorador de Windows, mover y volver a abrir; esta herramienta permite realizarlo desde un mismo formulario.

Cómo funciona

El formulario nos muestra la ruta actual donde el archivo activo se encuentra alojado y nos permite elegir una nueva ubicación para moverlo. Además de que nos permite decidir sobre si queremos mover el archivo guardando cambios recientes y si deseamos abrir el archivo ya en la nueva ubicación.

Imagen de la herramienta en ejecución

Mover archivo activo de carpeta

:: Descargar EXCELeINFO add-in 2.3.9

EXCELeINFO add-in: guardar datos filtrados como archivo nuevo

November 4, 2012 1 comment

Esta herramienta publicada en nuestro add-in, permite guardar cualquier resultados de un filtro en un archivo nuevo con extensión .xls, .xlsx o .csv.

Cómo funciona:

Después de realizar nuestro filtro, elegimos la herramienta y nos pedirá confirmación de guardar los datos filtrados como un nuevo archivo. Si aceptamos que continúe, nos mostrará el clásico formulario de Guardar como, donde elegiremos la ubicación de nuevo archivo.

Los datos filtrados se guardarán en otro archivo para así ser manipulados o enviados por correo electrónico.

Animación de la herramienta en ejecución

Guardar datos filtrados

:: Descargar EXCELeINFO add-in 2.3.9