Macros autoconscientes (Microsoft Excel)
Para algunas macros, es posible que deba determinar si existe una forma de determinar la máquina en particular en la que está operando la macro. Por ejemplo, puede tener una PC de escritorio que tenga un directorio particular en D: \ OraNT \ Plus33, mientras que su PC portátil tenga el directorio en C: \ OraNT \ Plus33. La macro, por supuesto, necesita detectar qué máquina está en uso para saber qué directorio usar para su procesamiento.
Hay diferentes formas de abordar esta tarea. Es posible crear una macro de Excel que realmente acceda a la API de Windows y determine el nombre de la computadora en la que se está ejecutando. Sin embargo, este enfoque puede resultar bastante complicado.
Una forma más fácil es simplemente usar el comando DIR de VBA para determinar dónde existe el directorio deseado. Lo siguiente hará el truco:
Sub OracleQueries() Dim sTemp As String Dim sGoodPath As String sGoodPath = "D:\OraNT\Plus33\" sTemp = Dir("D:\OraNT\Plus33\nul") If sTemp = "" Then sGoodPath = "C:\OraNT\Plus33\" sTemp = Dir("C:\OraNT\Plus33\nul") End If 'Now have directory information If sTemp <> "" Then 'Process queries using sGoodPath Else MsgBox "Directories not found!" End If End Sub
Observe cómo se usa la función DIR en este ejemplo. Normalmente, DIR devuelve el nombre del primer archivo que encuentra en el directorio solicitado.
Sin embargo, si el directorio está vacío, DIR devuelve una cadena vacía, incluso si el directorio realmente existe. Dado que todo lo que queremos hacer es averiguar si el directorio existe (no si hay archivos en él), es necesario agregar las letras «nul» al final de la ruta del directorio utilizada por DIR.
Esto hace que DIR devuelva una cadena vacía si el directorio no está ubicado, o los caracteres «nul» si lo está (incluso si el directorio está vacío).
Hacia el final de la macro, sTemp estará vacío si no se pudo ubicar ninguno de los directorios. Si se localizó uno de ellos, sTemp no estará vacío y sGoodPath se establecerá con el nombre del directorio que se puede utilizar en el procesamiento posterior.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (11576) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.
Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí: link: / excel-Self-Aware_Macros [Self-Aware Macros]
.