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