2013-05-28

Importar fuentes web (Atom o RSS) a Excel

Excel también nos permite importar fuentes fuentes web (Atom o RSS) en formato XML. ¿Qué podemos hacer con estos datos?
1. Para encontrar fuentes web, buscaremos el icono  en la página del contenido en cuestión. Haremos clic en el botón secundario y seleccionaremos Copiar dirección del enlace.

En este ejemplo, los libros más vendidos en Amazon en Ciencias, tecnología y medicina, la ruta copiada en es: http://www.amazon.es/gp/rss/bestsellers/books/902503031/ref=zg_bs_902503031_rsslink

2. En la ficha Programador (si no está disponible haz clic aquí) en el grupo XML, haz clic en Origen:








3. En el panel de tareas Origen XML, haz clic en Asignaciones XML y luego en Agregar:


4. En el cuadro de diálogo Seleccionar origen XML pega (CTRL + V) la ruta de la fuente web copiada previamente (ver paso 1) en Nombre de archivo.



5. Nos aparecerá el siguiente mensaje, y presionamos sobre Aceptar.


6. En el panel de tareas Origen XML seleccionamos los elementos que queremos importar (mantener CTRL pulsado para seleccionar varios) y los arrastramos a la hoja de Excel, o bien hacemos doble clic sobre ellos uno a uno. En nuestro ejemplo: title y pubDate.

7. Presionar botón secundario y haz clic sobre Actualizar.


8. El resultado final es la siguiente tabla. Para actualizar los datos, repetir el paso 7.


2013-05-23

Traducir fórmulas con VBA

Si necesitamos saber el nombre de una función en inglés otra alternativa es crear una función usando las propiedades Formulaque devolverá la fórmula de la celda en el idioma de la macro (inglés) y FormulaLocal, en el idioma del usuario.

1.Para traducir al inglés
Function INGLES(Mycell As Range)
INGLES = Mycell.Formula
End Function
2.Para mostrar en el idioma local
Function IDIOMALOCAL(Mycell As Range)
IDIOMALOCAL = Mycell.FormulaLocal
End Function
En el ejemplo se aprecia como cambia el separador de lista: coma en inglés y punto y coma en español.

Entradas relacionadas: Traducción de fórmulas de Ms Excel

2013-05-17

Traducción de fórmulas de Ms Excel

Es muy probable que tarde o temprano, especialmente si trabajamos con VBA, necesitemos traducir alguna fórmula del inglés, o tal vez de otro idioma en el que esté configurado nuestro Ms Excel.

La información más completa al respecto que he encontrado la ofrece Dolf Trieschnig que ha recopilado los nombres de las fórmulas de Excel en 16 idiomas. He tomado sus datos y creado una nueva hoja de búsqueda:


El fichero Excel se puede descargar aquí.

Entradas relacionadas: Traducir fórmulas con VBA

2013-05-10

Unir ficheros de texto con VBA Access

En la entrada anterior explicamos como unir ficheros de texto con VBA en Excel. En Access, el código es idéntico salvo la propiedad para obtener la ruta del fichero Access: Application.CurrentProject.Path
Sub UnirFicherosTexto()
  
    Dim r As String
    r = Application.CurrentProject.Path
    Dim SrcFiles, CurrSrc As String
    Dim DestFile As String, Counter As Integer
    Dim TextLine As String
    SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt")
    Open r & "\Fichero3.txt" For Output As #1
    For Counter = 0 To UBound(SrcFiles)
        Open SrcFiles(Counter) For Input As #2
        Do While Not EOF(2)
            Line Input #2, TextLine
            Print #1, TextLine
        Loop
        Close #2
    Next
    Close #1
    
End Sub
Para unir más de dos ficheros, los añadimos en el Array.
SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt", r & "\Fichero3.txt")
Entradas relacionadas: Unir ficheros de texto con VBA Excel

2013-05-03

Unir ficheros de texto con VBA Excel

En ocasiones necesitamos unir varios ficheros de texto (.txt o .csv). Por ejemplo, para consolidar dos ficheros descargados en distintos momentos.

Modificamos un ejemplo publicado por Jim Rech en google groups. Hemos transformado la referencias absolutas en relativas. Tan sólo hay que copiar el código en un módulo de Excel y guardar el fichero si es nuevo (o devolvería error pues la propiedad Application.ThisWorkbook.Path está vacía hasta que no se guarda el fichero).

Copiamos los dos ficheros (.txt o .csv) que deseamos unir, Fichero1 y Fichero2, en la misma ruta del Excel con el código. En esa ruta se creará el Fichero3 de salida, con la unión del 1 y el 2, y se sobreescribirá si ya existe.
Sub UnirFicherosTexto()
  
    Dim r As String
    r = Application.ThisWorkbook.Path
    Dim SrcFiles, CurrSrc As String
    Dim DestFile As String, Counter As Integer
    Dim TextLine As String
    SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt")
    Open r & "\Fichero3.txt" For Output As #1
    For Counter = 0 To UBound(SrcFiles)
        Open SrcFiles(Counter) For Input As #2
        Do While Not EOF(2)
            Line Input #2, TextLine
            Print #1, TextLine
        Loop
        Close #2
    Next
    Close #1
    
End Sub
Para unir más de dos ficheros, los añadimos en el Array.
SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt", r & "\Fichero3.txt")

Entradas relacionadas

2013-04-25

Mensaje emergente al abrir un fichero Ms Excel

La función MsgBox en VBA muestra un cuadro de diálogo al usuario y, si lo necesitamos, captura su respuesta (por ejemplo: Sí, No o Cancelar). Uno de los múltiples usos es desplegar este mensaje de texto al abrir un fichero de Excel.

Para ello necesitamos abrir el editor de Visual Basic Alt+F11 e insertar el código en ThisWorkBook. En el menú desplegable Objeto, selecciona Workbook. Por defecto Excel crea:
Private Sub Workbook_Open() ....[Inserta el código aquí] ... End Sub




La sintaxis en español es MsgBox(texto[, botones] [, título] [, archivoayuda, contexto])

Ejemplo 1-Mensaje simple

Private Sub Workbook_Open()
  MsgBox "1-El libro está en cálculo manual" & vbCrLf & _
  "2-Haz clic en F9 para recalcular fórmulas" & vbCrLf & _
  "", vbInformation, "INFORMACION"
End Sub
Escribimos el texto del mensaje, Chr(13) o vbCrLf, para insertar saltos de línea. VbInformation muestra el icono de mensaje de información y en el argumento título "INFORMACION".


 Ejemplo 2-Captura respuesta del usuario

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNo, "Nube de datos")
    If respuesta = vbYes Then 'Haz X
        MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
        Else                  'Haz Y
        MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
    End If
End Sub
Capturamos la respuesta del usuario con la variable Respuesta. Con vbQuestion + vbYesNo mostramos el icono de pregunta de advertencia y los botones Sí y No, en el argumento título "Nube de datos". La respuesta la manejamos con un If. vbInformation para el icono del sí y vbExclamation para el del no
.

Otra alternativa a If, quizá más clara y eficiente, es usar Select Case

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNoCancel, "Nube de datos")
    Select Case Respuesta
     Case vbYes 'Haz X
         MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
     Case vbNo  'Haz Y
         MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
     Case vbCancel
         Exit Sub 'Haz Z
    End Select
End Sub

Cambiamos el argumento [botones] para mostrar , No y Cancelar.

Información detallada de la función MsgBox en: Ayuda de Excel/Referencia del lenguaje de Visual Basic/Funciones/M-P/MsgBox (Función)

2013-04-23

Importar una especificación de importación/exportación en Ms Access: dos métodos

MÉTODO 1

1. Abrir la base de datos Access que necesita las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, haz clic en Access.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


4. En el menú Importar Objetos, hacer clic en Opciones >>























5. Desactivar la casilla de verificación de las Relaciones, activar la casilla de verificación de Especificaciones de importación/exportación y hacer clic en Aceptar.














 


MÉTODO 2

Otro método menos ortodoxo, que no he encontrado documentado:

1. Abrir la base de datos Access que contiene las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, hacer clic en Archivo de texto.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


 
4. En el Asistente para la importación de texto, clic sobre Avanzado, y en el menú emergente, clic sobre Especificaciones para abrir la especificación que queremos copiar. En Información del campo, clic en la esquina superior izquierda de la tabla y Ctrl + C, para copiar la tabla con las especificaciones.


5. Abrir la base de datos Access que necesita las especificaciones y repetir pasos 1, 2, 3. En el paso 4, en lugar de copiar la tabla con las especificaciones, pegarla con Ctrl + V. Confirmar que desea pegar los registros.

























Aprende a  importar o vincular a los datos de un archivo de texto

2013-04-22

Etiquetar en Ms Excel registros que contienen un determinado carácter o cadena

En una entrada anterior, vimos cómo crear en Ms Access un campo calculado para etiquetar los registros que incluyen un determinado carácter o cadena. Si tenemos el mismo problema en Ms Excel, creamos una columna que nos  identifique si el campo Cargo del contacto es Gerente, Representante o, si no es ninguno de los dos, Otros.

Dos opciones serían, copiar en la celda L2:
=SI(ESNUMERO(ENCONTRAR("Ger";D2));"Gerente";
SI(ESNUMERO(ENCONTRAR("Rep";D2));"Representante";"Otros"))
=SI(ESNUMERO(HALLAR("Ger";D2));"Gerente";
SI(ESNUMERO(HALLAR("Rep";D2));"Representante";"Otros"))

La función ENCONTRAR o HALLAR devuelve la posición de la cadena indicada (Ger o Rep) en la celda especificada. Con SI se evalua si lo anterior es verdadero, y lo etiquetaría como "Gerente" o pasaría al siguiente SI anidado. Usamos la función ESNUMERO porque la función ENCONTRAR o HALLAR, si no encuentra la cadena indicada, devuelve el error #¡VALOR!.

Copiamos cualquiera de las dos fórmulas anteriores y arrastramos hacia abajo. El resultado final sería:


En otra ocasión examinaremos las diferencias entre ENCONTRAR y HALLAR.

Entradas relacionadas: 
  1. Etiquetar en Ms Access registros que contienen un determinado carácter o cadena

2013-04-19

Menú emergente con las 15 primeras hojas de un libro de Excel

Normalmente, para desplazarnos entre las hojas de un libro de Excel, hacemos clic sobre la hoja deseada, utilizamos los comandos Ctrl + Av Pág o Ctrl + Re Pág, o los botones de desplazamiento:

Botones de desplazamiento
Una alternativa, cuando tenemos muchas hojas, es hacer clic con el botón secundario del ratón sobre los botones de desplazamiento. Aparecerá un menú emergente con las 15 primeras hojas:

Si hubiera más de 15 hojas habría que seleccionar Más hojas... para acceder a la lista completa:


2013-04-12

Etiquetar en Ms Access registros que contienen un determinado carácter o cadena

Por ejemplo, a la tabla de Proveedores de la base de datos Neptuno (Bases de datos de muestra incluida en Access), queremos añadir un nuevo campo que identifique si el campo Cargo del contacto es Gerente, Representante o, si no es ninguno de los dos, Otros.








1.Creamos una consulta basada en la tabla Proveedores
2.Agregamos un campo calculado, Tipo de cargo.

 En el generador de expresiones escribimos:


Usamos SiInm anidados. La función EnCad, busca sucesivamente en el campo [Proveedores]![CargoContacto] la cadena que le indicamos (Gerente y Representante), y la etiqueta con el nombre correspondiente, y si no encuentra ninguna de las dos, escribe Otros.

3.El resultado de la consulta, con el campo Tipo de cargo que etiqueta los registros, sería:


Si queremos etiquetar también las abreviaturas Ger. como Gerente y Repr. como Representantes, modificaríamos la expresión anterior para que no aparezcan como Otros:
Tipo de cargo: SiInm(EnCad([Proveedores]![CargoContacto];"Ger");"Gerente";
SiInm(EnCad([Proveedores]![CargoContacto];"Repr");"Representante";"Otros"))

Entradas relacionadas:
  1. Etiquetar en Ms Excel registros que contienen un determinado carácter o cadena
Nube de datos