Archive

Archive for the ‘Macros’ 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

Permitir 3 intentos de contraseña para usar un archivo de Excel antes de cerrarse

November 21, 2012 1 comment

En un post anterior llamado Simular acceso con usuario y password en Excel con formulario vba presentaba un ejemplo en el que teníamos un formulario que nos solicita usuario y contraseña. Tanto el usuario como la contraseña los tomaba de una tabla y sólo cuando ambos coincidían, permitía cerrar el formulario y continuar.

En este ocasión, y tomando en cuenta el post mencionado, comparto un formulario que se lanza al momento de abrir nuestro archivo de Excel y nos solicita una contraseña para usarlo.

Cómo funciona

A diferencia del otro formulario, este sólo pide una clave de acceso para poder usar el archivo. En caso de que intentemos en 3 ocasiones una clave y ésta sea inválida, se cerrará el archivo.

Código

'Definimos la variable pública Intentos
Public Intentos As Byte
'
'Validar la clave
Private Sub CommandButton1_Click()
If Me.txtPass.Value = 1234 Then
    MsgBox "Contraseña válida. Se cerrará el formulario.", _
        vbInformation, "EXCELeINFO"
    Unload Me
Else
    Intentos = Intentos + 1
    MsgBox "Contraseña inválida. Llevas " & Intentos & " intento(s).", _
        vbInformation, "EXCELeINFO"
    Me.txtPass.SetFocus
    Me.txtPass.Value = ""
End If
If Intentos = 3 Then
    MsgBox "Has cumplido 3 intentos. Aquí se cerrará el archivo Excel.", _
        vbInformation, "EXCELeINFO"
    Unload Me
    ActiveWorkbook.Close SaveChanges:=False
Else
End If
End Sub
'
'Formateamos los objetos del formulario
Private Sub UserForm_Initialize()
With Me
    .txtPass.PasswordChar = "*"
    .txtPass.MaxLength = 8
End With
End Sub
'
'Evitamos que use la x para cerrar el formulario
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "Por favor, ingresa una contraseña.", vbInformation, "EXCELeINFO"
End If
End Sub

Animación del formulario en acción

EXCELeINFO - 3 intentos de contraseña

:: Descargar el ejemplo

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: , , ,

Restringir ingreso de texto o números en TextBox en Excel

November 7, 2012 7 comments

El presente artículo muestra un formulario en el que tenemos 2 TextBoxes: uno para ingresar sólo texto y otro para ingresar sólo números.

Cómo funciona

  • Sólo números: aquí utilizamos la función Chr(x), donde especificamos que si el caracter es menor  a 48 (0) y mayor a 57 (9) entonces éste deberá reemplazarse con “”, es decir, vacío.
  • Sólo texto: aquí utilizamos la función IsText para validar que todo lo que no sea texto se reemplace con “”, es de decir, vacío.

Código

Los siguientes códigos deberán ir en el Change de cada uno de los TextBoxes

'Validar que sólo se ingresen números (a-z y símbolos)
Private Sub txtNumero_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As Integer
    On Error Resume Next
    Texto = Me.txtNumero.Value
    Largo = Len(Me.txtNumero.Value)
    For i = 1 To Largo
        Caracter = Mid(Texto, i, 1)
        If Caracter <> "" Then
            If Caracter < Chr(48) Or Caracter > Chr(57) Then
                Me.txtNumero.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
    Caracter = 0
    Caracter1 = 0
End Sub
'
'Validar que sólo se ingrese texto (0-9)
Private Sub txtTexto_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As String
    On Error Resume Next
    Texto = Me.txtTexto.Value
    Largo = Len(Me.txtTexto.Value)
    For i = 1 To Largo
        Caracter = CInt(Mid(Texto, i, 1))
        If Caracter <> "" Then
            If Not Application.WorksheetFunction.IsText(Caracter) Then
                Me.txtTexto.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
End Sub

Animación del formulario en ejecución

Validar texto y números

:: Descargar el ejemplo

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