¿Puede extraer datos de Excel de un archivo .csv externo (y dinámico)?

14

Tengo un script que genera varias métricas de rendimiento para una computadora en un .csv. Excel realiza una comprobación básica de estadísticas para desviación estándar, etc.

Me doy cuenta de que puede importar archivos .csv a Excel, pero lo que intento hacer es leer esos datos dinámicamente en mi modelo de Excel sin tener que volver a importar y modelar cada vez.

¿Hay alguna manera de hacer que una celda / tabla haga referencia a un .csv externo sin tener que volver a importar cada vez?

editor
fuente
Cuando el archivo se actualiza, ¿se agrega o se sobrescribe?
Benjamin Anderson
Completamente sobrescrito. Pero supongo que podría modificarlo para que funcione de cualquier manera.
editor

Respuestas:

5

La forma más fácil de hacerlo es importar los datos a Access o SQL Express, y luego usar las características y funciones de conexión de datos en Excel. Después de la configuración inicial, todo lo que tendría que hacer es hacer clic en Actualizar todo y extraerá los datos y volverá a calcular los valores.

Puede importar directamente el CSV con la función de conexión de datos, pero va a querer extraer los datos y agregarlos a una hoja de trabajo. Esto funcionará, siempre que lo importe a una hoja de trabajo secundaria y deje sus fórmulas y cálculos en otra hoja. Cuando haga clic en Actualizar con este método, le pedirá el nombre del archivo y luego lo importará nuevamente con la misma configuración que se usó originalmente. Este método también suele ser más lento o inutilizable, con grandes conjuntos de datos.

Benjamin Anderson
fuente
2
Con la función de conexión de datos, puede deshabilitar la solicitud de nombre de archivo (hay una casilla de verificación al final del asistente). En ese punto, también puede configurarlo para que se actualice automáticamente cada X minutos. Funciona bien para pequeños conjuntos de datos.
Martin McNulty
4

Ventanas

También puede usar Power Query, que es una forma un poco más flexible de lograr lo mismo que en la respuesta de @ andy-lynch .

  1. Consíguelo aquí
  2. Instalarlo
  3. Vaya a la nueva pestaña de cinta "Power Query".
  4. Haga clic en "Desde archivo" o "Desde web" y siga las instrucciones en pantalla.

Vea a continuación el gif animado para la vista previa:

ingrese la descripción de la imagen aquí

Mac OS

Power Query no está disponible para MacOS; ni el cuadro de diálogo "Abrir desde el texto" de Excel en MacOS acepta una URL (al menos en la versión 15.33).

Para crear dicha conexión, primero tendría que construir un archivo de consulta web (.iqy), como se explica en esta guía , y luego importarlo con el comando de menú "Datos -> Obtener datos externos -> Ejecutar consulta guardada".

tutuDajuju
fuente
Estoy de acuerdo - en Excel 2016+ Entiendo que este es ahora el valor predeterminado (como Obtener y transformar )
Andy Lynch
2

La pregunta es "¿Cómo hago referencia a datos en un archivo .csv?

Mi forma sería cortar el archivo .csv y usar una macro que contenga VBA y ADO que reciba los datos y los coloque directamente en una hoja de cálculo en Excel. Cualquier base de datos compatible con ODBC puede ser su fuente.

Excel 2010 tiene Datos >> Obtener datos externos, de varias fuentes de datos. Sin embargo, prefiero escribir mi propio código porque tengo control absoluto y puedo formatear los resultados en la macro. La actualización se hace con el clic de un botón y puede hacer cualquier cosa con ella.

Podría informarle algunos detalles si me dice de qué base de datos provienen las métricas.

PD Mire la lista de controladores en Datos >> Obtener datos externos >> Conexiones existentes >> Buscar más >> Nueva fuente >> Otro avanzado >> Siguiente que lo lleva a la lista de Propiedades de enlace de datos. Luego debe saber qué base de datos de origen y qué controlador utilizar. Puedes enviarme un correo electrónico a cliffbeacham a hotmail con más detalles.

Un acantilado
fuente
2

Una forma más simple (gracias a esta publicación ) es importar los datos como lo haría para un archivo de texto que ya ha descargado (es decir Data > Import Text File), pero en lugar de ingresar un nombre de archivo, pegue la URL del archivo CSV.

Andy Lynch
fuente
Esto es útil. Si el archivo remoto cambia, imagino que no se está actualizando dinámicamente.
editor
Eso es cierto, aunque las opciones habituales para actualizar en abierto / cada <x> minutos todavía se aplican.
Andy Lynch
0

Con VBS macro o script se vería así (Excel2010 y posterior):

Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "Book1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Esta macro fue realmente grabada por el Grabador de macros de Excel 2013. Podría crear un botón que active esta macro.Grabadora de macros en la barra de herramientas de MS Excel 2013

Arthur Zennig
fuente