Mostrando entradas con la etiqueta Datos externos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Datos externos. Mostrar todas las entradas

2016-01-31

Obtener el nombre y la ruta de las conexiones de un libro de Excel VBA

Title

Problema

Queremos obtener los nombres y rutas de las conexiones de un libro de Excel mediante VBA, sin necesidad de ir a la pestaña Datos, y ñuego a Conexiones.

Solución

Mediante código VBA podemos extraer el nombre y la ruta de las conexiones existentes en un libro. En el prime bucle obtenemos los nombres y en el segundo la ruta. Este segundo bucle, que incluye la propiedad TextConnection sólo funciona con Excel 2013 y versiones posteriores.

Sub ObtenerNombreRutaConexion()
    Dim conn As WorkbookConnection
    For Each conn In ActiveWorkbook.Connections
      Debug.Print conn.Name
    Next conn
    For Each conn In ActiveWorkbook.Connections
      Debug.Print conn.TextConnection.Connection
    Next conn
End Sub

Resultado

En la ventana Inmediato del editor (VBE) obtendremos el nombre y la ruta de las conexiones.

Entradas relacionadas

2015-10-19

Conectar Excel a una base de datos en Access

Title Conectar Excel con Access nos permite trabajar directamente con información procedente de Access. Así ahorramos tiempo, evitando copiar repetidamente los datos y posibles errores. Lo primero que necesitamos hacer es crear una conexión con la tabla o consulta de la base de datos de Access. Vamos a usar como ejemplo la base de datos en Access Neptuno.

Crear conexión de datos entre Excel y Access

  1. En la ficha Datos hacemos clic en Desde Access.
  2. En el cuadro de diálogo Seleccionar archivo de origen de datos, buscamos la ubicación del fichero de Access y hacemos clic en Abrir.
  3. En Seleccionar tabla, elegimos aquella tabla o consulta que deseamos importar y vincular.
  4. En Importar Datos, dejamos las opciones por defecto. Nos aseguramos de elegir la celda de destino correcta.
  5. La conexión se habrá realizado y la tabla aparecerá en Excel.

Actualizar la conexión

Ahora podremos analizar la información proveniente de Access. Para asegurarnos de que Excel refleja la última información disponible, actualizaremos la conexión.

  • Forzar la actualización
  • Bien desde la ficha Datos clic en Actualizar todo. O bien haciendo clic sobre una celda de la tabla y desde la ficha Herramientas de tabla.

  • Personalizar la actualización
  • Personalizaremos la actualización de la conexión con Access para automatizar la actualizando el archivo cada 15 minutos y automáticamente cada vez que lo abramos.

    1. En la ficha Datos, clic en Conexiones y después en el botón de Propiedades.
    2. En Propiedades de conexión activamos las casillas Actualizar cada e indicamos los minutos deseados, y la casilla Actualizar al abrir el archivo.

    Entradas relacionadas

  • Importar datos desde la web a Excel
  • Importar ficheros CSV en Excel mediante VBA
  • Actualizar origen de datos de Excel: atajo y con VBA
  • No es posible editar o actualizar los vínculos o el origen de datos
  • Consulta SQL en Excel mediante Microsoft ActiveX Data Objects (ADO)
  • Conectar una consulta de unión (union query) de Access desde Excel
  • Referencias

  • Conectarse con datos externos
  • Propiedades de conexión
  • 2014-11-01

    Importar datos desde la web a Excel

    Title Excel nos permite importar datos actualizables de una página web, como por ejemplo cotizaciones, tipos de cambio, o datos financieros. Después, podremos analizarlos o emplearlos en nuestros cálculos. En esta entrada vamos a importar las cotizaciones de las acciones del IBEX 35, el principal índice bursátil de referencia de la bolsa española.

    Obtener datos externos

    1. En la ficha Datos, en el grupo Obtener datos externos, hacemos clic en Desde Web.
    2. En el cuadro de diálogo Nueva consulta Web, escribimos o pegamos la dirección URL de la página Web deseada.
    3. Clic en Ir.
    4. Clic en Importar.
    5. En el cuadro de diálogo Importar datos seleccionamos el destino y clic en Aceptar.

    Editar propiedades

    Es posible que necesitemos modificar las propiedades de una consulta. Por ejemplo, si ajustamos el ancho de las columnas y queremos evitar Excel cambie de nuevo el ancho cada vez que actualicemos la consulta.

    1. Clic sobre una celda que pertenezca a la consulta.
    2. En la ficha Datos, en el grupo Conexiones, hacemos clic en Propiedades.
    3. Modificamos las opciones oportunas. En este ejemplo, desmarcamos la selección de Ajustar el ancho de la columna.
    4. Clic en Aceptar.

    Creamos nuestras tablas

    La consulta web anterior la dejamos separada en una hoja de datos. En otra hoja vinculamos las celdas con la hoja de datos y las formateamos. Incluimos formato condicional para mostrar las subidas y bajadas en verde o rojo. Empleamos el tipo de fuente Wingdings para crear las flechas: é (hacia arriba) y ê (hacia abajo).

    Resultado final

    Referencias:
    Obtener datos externos de una página web

    2014-05-09

    Importar ficheros CSV en Excel mediante VBA

    Title En Excel, una de las opciones para importar un fichero de texto es conectarse a él (obtener datos externos) mediante el asistente para importar texto: Alt+D+F+X. El conectarnos a datos externos en lugar de abrirlos, nos permitirá poder actualizarlos en el futuro.

    Si queremos automatizar este proceso y evitar el uso repetido del asistente, podemos emplear un código similar al que he creado:

    Importar CSV seleccionándolo con un cuadro de diálogo

    Sub ImportarCSV()
        Dim t As Single
        t = Timer
        Sheets("DATOS").Cells.ClearContents
        strFile = Application.GetOpenFilename("CSV, *.csv")
            If strFile = Empty Then
               Response = MsgBox("Ningún fichero seleccionado", _
               vbOKOnly, "Error")
            Exit Sub
            Else
            End If
    
        With Sheets("DATOS").QueryTables.Add(Connection:= _
            "TEXT;" & strFile _
            , Destination:=Sheets("DATOS").Range("$A$1"))
            .Name = "fichero"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True 'CSV: punto y coma
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1) '5 columnas
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        MsgBox Timer - t
    End Sub
    
    En la primera parte iniciamos el cronómetro. Limpia los contenidos de la hoja DATOS en la que importaremos el fichero de texto CSV desde la celda A1. Abre un cuadro de diálogo que nos permite seleccionar el fichero a importar y nos alerta si no seleccionamos ninguno. Finalmente, importa el fichero de texto delimitado por punto y coma de 5 columnas, y nos indica el tiempo empleado en la importación.

    Deliberadamente he dejado todas las propiedades que se detallan al grabar una macro usando el asistente de importación. Sin entrar a explicar todas las propiedades del objeto QueryTable, que casi se explican por sí solas, vamos a detenernos en tres:

    .RefreshStyle Establece cómo se agregan o eliminan filas de la hoja de cálculo especificada. Si se sobreescriben las filas o no.
    .TextFileStartRow Nos permite especificar la fila a partir de la que comienza la importación. Es 1 por defecto.
    .TextFileColumnDataTypes Para especificar los tipos de datos de las columnas importadas mediante constantes. El 1 (xlGeneralFormat) las importa con formato general y el 9 (xlSkipColumn) para saltar esa columna. Ej.: TextFileColumnDataTypes = Array(1, 9, 1, 1, 1) saltaría la segunda columna. Si especifica más elementos para la matriz que columnas disponibles, se omiten esos valores.

    Anexar nuevos CSV

    Además, si necesitamos anexar nuevos ficheros CSV (asumimos la misma estructura que el anterior) podemos usar el siguiente código:

    Sub AnexarCSV()
        Dim t As Single
        t = Timer
        Sheets("DATOS").Select
        Dim LastRow As Long
        LastRow = Range("A1").End(xlDown).Row + 1
    
        With Sheets("DATOS").QueryTables.Add(Connection:= _
            "TEXT;" & ThisWorkbook.Path & "\fichero.csv" _
            , Destination:=Sheets("DATOS").Range("A" & LastRow))
            .Name = "fichero"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertEntireRows ' Inserta filas
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 2 ' Salta 1ª línea con encabezado
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True 'CSV: punto y coma
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        MsgBox Timer - t
    End Sub
    
    En la primera parte iniciamos el cronómetro. Identificamos la última fila escrita e importamos el CSV que de copiará a partir de la fila previamente identificada. En este caso, en lugar de elegir el fichero con un cuadro de diálogo, se trata del fichero.txt ubicado en la misma ruta que nuestro Excel. Finalmente, nos indica el tiempo empleado en la importación.

    En cualquier caso, si deseamos indicar manualmente la ruta del fichero y que se copie en la hoja activa, basta con sustituir las tres líneas desde With y a .Name por estas:

    With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\TU_RUTA_CORRESPONDIENTE\fichero.csv", _ 
    Destination:=Range("$A$1"))
    

    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
    Nube de datos