2013-10-21

Vínculos externos rotos al mover el libro de destino en Excel

Cuando Excel no puede actualizar los vínculos externos, nos muestra el siguiente mensaje alertando de la imposibilidad de actualizarlos. 


Podemos hacer clic en Modificar vínculos para editar las rutas de los libros de origen y en principio el problema estaría resuelto. No obstante, cuando los libros de destino y origen están ubicados en la misma carpeta, si copiamos el libro de destino a otra carpeta, se romperán los vínculos. En tal caso tendremos que editar los vínculos de nuevo.

¿Cómo es posible? Están correctamente vinculados y en ubicación indicaba la ruta completa del libro de origen. Si no cambia la ubicación del libro de origen de lugar, ¿por qué se rompen los vínculos?


La explicación se encuentra en cómo Excel almacena las rutas de acceso al vínculo. Excel básicamente sigue una serie de reglas para almacenar la ruta de acceso a un libro vinculado, guardando los vínculos de forma relativa siempre que sea posible. Es decir, no guarda la ruta completa al libro de origen: "si el archivo vinculado y el archivo de datos de origen están en la misma carpeta, se almacena sólo el nombre de archivo."

Al mover el libro de destino, se rompen los vínculos con los libros de origen que estaban en la misma carpeta del libro de destino. Excel busca esos ficheros en la nueva ruta del libro de destino y, al no encontrarlos, no puede actualizarlos. Para solucionarlo, tenemos dos opciones:

1. Copiamos esos libros de origen en la nueva ubicación del libro de destino para que continúen juntos.
2. Con el libro de destino abierto, guardar como en la nueva ubicación y se actualizarán los enlaces adecuadamente.

Por ello es recomendable separar los libros de origen y de destino. Así, si necesitáramos mover el libro de destino a otra ubicación, no tendremos problemas al actualizar los vínculos. Por ejemplo:

Por un lado, los ficheros de origen en la carpeta de su semana correspondiente. Y por otro, fuera de la carpeta, los ficheros de destino. Cuando los ficheros de destino no necesiten actualizarse más, podremos ubicarlos en su carpeta semanal.

2013-10-14

Quitar o borrar esquema en Excel con VBA

Recientemente me he encontrado con un libro en el que varias hojas contenían un esquema de filas. Podemos quitar el esquema yendo a la ficha Datos grupo Esquema, haciendo clic sobre Borrar esquema.
Para evitar repetir manualmente el proceso para cada hoja, he creado el siguiente código que desagrupa y borra el esquema de filas y columnas de todas las hojas de un libro de Excel, incluidas las ocultas:
Sub Desagrupar()

Application.ScreenUpdating = False
Dim ws As Worksheet
    For Each ws In Sheets
    ws.Activate
    Cells.ClearOutline
    On Error Resume Next 
    Next
Application.ScreenUpdating = True

End Sub 
La línea On Error Resume Next evita que la ejecución del código se detenga en el caso de que, por ejemplo, la hoja esté protegida.

2013-10-06

Buscar y reemplazar cadenas de texto con VBA

Para reemplazar puntualmente texto y números en una hoja de Excel, en la pestaña Inicio, en el grupo Edición, hacemos clic en Buscar y seleccionar. O bien CTRL+L. Si tenemos que reemplazar así varias cadenas de texto el procedimiento es tedioso y lento.

Una manera de acelerar y automatizar el mismo es mediante VBA, creando una función definida por el usuario. Veamos un ejemplo:


En la tabla anterior, columna A, tenemos un campo fecha descargado de un sistema que las procesa en inglés. Cuando tratamos de operar con las fechas nos devuelve un error porque Excel, con el idioma local en español, no reconoce las iniciales de los meses de enero (JAN), abril (APR), agosto(AUG), y diciembre (DEC). Necesitamos sustituir esas cuatro cadenas de texto. Para reemplazarlas creamos en un módulo de VBA, la siguiente función de usuario.

Public Function BuscarCadena(Reemplazarcadena As String) As String

Dim Originales As Variant, Sustituciones As Variant
Dim i As Long
Originales = Array("JAN", "APR", "AUG", "DEC")
Sustituciones = Array("ENE", "ABR", "AGO", "DIC")
BuscarCadena = Reemplazarcadena
    For i = 0 To 3 'Los subíndices de matriz empiezan en 0,
                   'por tanto Originales(0) = "JAN"[...] Originales(3)="DEC"
    BuscarCadena = Replace(BuscarCadena, Originales(i), Sustituciones(i), _
    compare:=vbTextCompare)
    Next

End Function

El resultado final, con los cambios resaltados en naranja, es:


En la celda C2 introducimos la función definida en VBA =BuscarCadena(A2) y arrastramos la fórmula hasta C13. Si queremos en lugar de 01-ENE-2013 de la columna C el formato de fecha corta (dd/mm/aaaa) de la columna D hay tres opciones:

1. Aplicar el formato en VBA
BuscarCadena = Format(Replace(BuscarCadena, Originales(i), Sustituciones(i), _
compare:=vbTextCompare), "dd/mm/yyyy")
2.Multiplicar por 1 la columna C. Al operar le cambia el formato a fecha corta.

3. Usar la función en D2 =FECHANUMERO(C1) y arrastrar hacia abajo el controlador de relleno. Nos devuelve el número de serie secuencial que representa una fecha determinada, 41275 para C1. A continuación, para darles el formato deseado, seleccionamos las celdas D2:D13. Y en la ficha Inicio, en el grupo Número, clic en la flecha situada en la esquina inferior derecha. En el cuadro de diálogo Formato de celdas, seleccionamos en la categoría Fecha el primer tipo.


También podemos acceder al cuadro de diálogo Formato de celdas presionando CTRL+1.

2013-10-01

Insertar imágenes en una hoja de cálculo de Google Drive

En una entrada anterior vimos como insertar una imagen GIF en Excel. Insertar una imagen GIF en una hoja de cálculo en Google Drive es mucho más sencillo. Existen dos opciones, insertar una imagen en la hoja o en una celda.

Insertar una imagen en una celda

En la celda introducimos la fórmula =image("URL", 3). El parámetro 3 indica que se respete el tamaño original de la imagen. Adaptamos la altura y anchura de la celda hasta que aparezca íntegramente.

Abajo la celda con la imagen insertada:

Insertar una imagen en la hoja

Hacemos clic en el menú desplegable Insertar y seleccionamos insertar imagen. En el menú tenemos diferentes opciones: Subir, Tomar una instantánea, URL, Albumes, Buscar. En nuestro caso vamos a elegir URL, pegamos la ruta de la imagen elegida y presionamos seleccionar.



El tamaño máximo de cada imagen que podemos insertar es de 2MB a día de hoy. El resultado sería:


Entradas relacionadas:
Nube de datos