Macro y formulario en Excel para obtener las variables de entorno de Windows

Qué es una variable de entorno

Las variables de entorno son un conjunto de valores dinámicos en Windows que afectan el comportamiento de los procesos en una computadora – Wikipedia.

Las variables de entorno que pueden llegar a ser más usadas son:

  • %COMPUTERNAME% = Nombre de la computadora.
  • %PROGRAMFILES% = Carpeta donde se intalan los programas.
  • %WINDIR% = Carpeta de Windows.

Para qué me sirven las varibles de entorno en Excel

Inicialmente puedes dudar sobre el uso de las variables de entorno en Excel, pero si tomas en cuenta que al ser variables, pueden tomar distintos valores dependiendo la PC donde ejecutes tu archivos y sacarles provecho usando macros de vba.

Puedes, por ejemplo, impedir el uso de una macro si la el usuario tiene un nombre distinto al que deseas (%CLIENTNAME%) o guardar un archivo directamente en la carpeta del usuario de Windows (%HOMEPATH%).

Pegar las variables de entorno en una hoja de Excel

En la Figura 1 vemos que tenemos un botón para llamar las variables y éstas se enlistarán en la hoja de Excel.

image

Figura 1. Mostrar variables de entornio en Excel.

Para obtener las variables hacemos uso de la función Environ(), la cual nos devolverá los valores actualmente estén asignamos en Windows.

En CMD podemos usar el comando SET para visualizar las variables de Windows.

La siguiente macro nos permitirá obtener las variables y pasarlas a una hoja de Excel:

Sub MostrarVariables()
    'Declaramos variables
    '
    Dim i As Integer
    '
    i = 1
    '
    'Mientras el valor de Environ NO sea vacío, se obtiene el valor.
    While Environ(i) <> Empty
        '
        ActiveWorkbook.Sheets("Hoja1").Range("A8").Offset(i, 0).Value = Environ(i)
        '
        i = i + 1
        '
    Wend
    '
End Sub

Para este ejemplo también desarrollé un formulario donde tendremos un ListBox que mostrará las variables. Se usa la misma función Environ(), tal como se muesra en la Figura 2.

image

Figura 2. UserForm con ListBox.

El siguiente código vba hará que nuestro formulario funcione:

'Llenar ListBox
Private Sub CommandButton1_Click()
Dim i As Integer
    '
    i = 1
    '
    While Environ(i) <> Empty
        '
        Me.ListBox1.AddItem Environ(i)
        '
        i = i + 1
        '
    Wend
    '
End Sub
'
'Cerrar
Private Sub CommandButton2_Click()
    Unload Me
End Sub
'
'Al dar click en el ListBox
Private Sub ListBox1_Click()
'
'Declaramos variables
Dim Cuenta As Integer
Dim Numero As Integer
Dim j As Integer
Dim i As Integer
    '
    Cuenta = Me.ListBox1.ListCount
    '
    'Validamos que haya un elemento seleccionado.
    For j = 0 To Cuenta - 1
        If Me.ListBox1.Selected(j) = True Then
            Numero = Numero + 1
        End If
    Next j
    '
    'La hoja seleccionada se pasará al ListBox de hojas visibles.
    For i = 0 To Cuenta - 1
        If Me.ListBox1.Selected(i) = True Then
            TextoSel = Me.ListBox1.List(i)
        End If
    Next i
    '
    LargoTexto = Len(TextoSel)
    IgualEncontrado = WorksheetFunction.Find("=", TextoSel)
    Variable = Left(TextoSel, IgualEncontrado - 1)
    Me.lblVariable.Caption = Variable
    '
    Valor = Right(TextoSel, LargoTexto - IgualEncontrado)
    '
    Me.lblValor.Caption = Valor
'
End Sub

Anexos

Para que puedas hacer tus pruebas y experimentos, puedes descargarte el ejemplo:

:: Descargar Variables de entorno usando Environ.rar

You may also like...