Tag Archives: MS Office

Subrutinas para VBA

Por más que no sea un gran fan de Microsoft, debo admitir que el Office es un buen producto. A mi me gusta especialmente el Excel por la cantidad de cosas que se pueden hacer con él. Si además, lo utilizamos en conjunto con VBA (el pequeño entorno de desarrollo en Visual Basic que está metido dentro del Office), el número de posibilidades se incrementa exponencialmente. Es cierto que el VB está muy, muy lejos de ser el mejor lenguaje de programación, pero en este caso cumple su cometido (aunque muchas veces extrañe las ventajas de lenguajes más elaborados como C#).

Bueno, regresando al tema de este post, quería colocar acá algunas subrutinas que utilizo cuando programo en VBA. Creo que pueden ser útiles a más de uno, además que me sirven a mi cuando comienzo un nuevo proyecto.

' Adds a new worksheet to the current workbook.
' Name of the sheet should be pass as a parameter.
' If a sheet with the same name already exists, it is deleted prior creation.
Sub AddSheet(sheetName As String)
    RemoveSheet (sheetName)
    ' Added as last sheet
    Sheets.Add After:=Sheets(Sheets.count)
    Sheets(Sheets.count).name = sheetName
End Sub
 
' Deletes a worksheet from the current workbook.
Sub RemoveSheet(sheetName As String)
    Dim alerts As Boolean
    If SheetExists(sheetName) Then
        alerts = Application.DisplayAlerts
        ' Avoid alert on delete
        Application.DisplayAlerts = False
        Sheets(sheetName).Delete
        Application.DisplayAlerts = alerts
    End If
End Sub
 
' Returns TRUE if there is a worksheet with the given name on the active workbook.
Function SheetExists(sheetName As String) As Boolean
    SheetExists = False
    On Error GoTo NoSuchSheet
    If Len(Sheets(sheetName).name) > 0 Then
        SheetExists = True
        Exit Function
    End If
NoSuchSheet:
End Function

UPDATE: He encontrado que el cambio de nombre de la hoja en AddSheet puede fallar si existen hojas ocultas en el libro. Así que estoy buscando una solución, apenas la tenga la cuelgo.

Demora al iniciar el Microsoft Office Picture Manager

Me ha pasado algunas veces que luego de algún tiempo de utilizar el Office Picture Manager (la aplicación de Office 2003/2007 para ver y retocar fotos), este demore una eternidad (entre 10 segundos y 3 minutos) en iniciar.

La solución a este problema la acabo de encontrar aquí. Básicamente, el problema se resuelve quitando del archivo OIScatalog.cag (ubicado en C:\Documents and Settings\%USUARIO%\Local Settings\Application Data\Microsoft\OIS) rutas a directorios no válidos o ubicados en la red que ya no están disponibles. Este archivo se puede editar con cualquier editor de textos planos (como el Notepad, Notepad2, Notepad++ o mi favorito, SciTE) y eliminar las entradas mru no válidas.

Una solución más simple si es que no se usa el Picture Manager para organizar las fotos, es borrar el dichoso archivo.