Czy można pobrać dane programu Excel z zewnętrznego (i dynamicznego) pliku .csv?

14

Mam skrypt, który wyświetla szereg wskaźników wydajności komputera w pliku .csv. Program Excel sprawdza podstawowe statystyki dla odchylenia standardowego itp.

Zdaję sobie sprawę, że możesz importować pliki .csv do Excela, ale staram się czytać te dane dynamicznie do mojego modelu Excela bez konieczności ponownego importowania i ponownego modelowania za każdym razem.

Czy istnieje sposób na odniesienie komórki / tabeli do zewnętrznego pliku .csv bez każdorazowego ponownego importowania?

redaktor
źródło
Czy plik jest aktualizowany, czy jest dodawany, czy zastępowany?
Benjamin Anderson
Całkowicie nadpisany. Ale chyba mógłbym go zmodyfikować, aby działał w jakikolwiek sposób.
redaktor

Odpowiedzi:

5

Najprostszym sposobem na to jest zaimportowanie danych do programu Access lub SQL Express, a następnie użycie funkcji i funkcji Data Connection w Excelu. Po wstępnej konfiguracji wystarczy kliknąć Odśwież wszystko, aby pobrać dane i ponownie obliczyć wartości.

Możesz bezpośrednio zaimportować plik CSV za pomocą funkcji połączenia danych, ale będzie chciał pobrać dane i dodać je do arkusza. Będzie to działać, dopóki importujesz go do dodatkowego arkusza roboczego i pozostawiasz formuły i obliczenia na innym arkuszu. Po kliknięciu przycisku Odśwież przy użyciu tej metody poprosi on o nazwę pliku, a następnie zaimportuje go ponownie przy użyciu tych samych ustawień, które były pierwotnie używane. Ta metoda jest również zwykle wolniejsza lub nie nadaje się do użytku z dużymi zestawami danych.

Benjamin Anderson
źródło
2
Za pomocą funkcji połączenia danych można wyłączyć monit o nazwę pliku (na końcu kreatora znajduje się pole wyboru). W tym momencie możesz także ustawić automatyczne odświeżanie co X minut. Działa dobrze w przypadku małych zestawów danych.
Martin McNulty
4

Windows

Możesz także użyć Power Query, która jest nieco bardziej elastycznym sposobem na osiągnięcie tego samego, co w odpowiedzi @ andy-lynch .

  1. Zdobądź to tutaj
  2. Zainstaluj to
  3. Przejdź do nowej karty wstążki „Power Query”.
  4. Kliknij „Z pliku” lub „Z Internetu” i postępuj zgodnie z instrukcjami na ekranie.

Zobacz poniżej animowany gif do podglądu:

wprowadź opis zdjęcia tutaj

System operacyjny Mac

Power Query nie jest dostępne dla MacOS; ani też okno dialogowe „Z tekstu” programu Excel w systemie MacOS nie akceptuje adresu URL (przynajmniej w wersji 15.33).

Aby utworzyć takie połączenie, najpierw trzeba zbudować plik zapytania sieciowego (.iqy), jak wyjaśniono w tym przewodniku , a następnie zaimportować go za pomocą polecenia menu „Dane -> Uzyskaj dane zewnętrzne -> Uruchom zapisane zapytanie”.

tutuDajuju
źródło
Zgadzam się - w programie Excel 2016+ rozumiem, że teraz jest to ustawienie domyślne (jako Get and Transform )
Andy Lynch
2

Pytanie brzmi: „Jak odwoływać się do danych w pliku .csv?

Moim sposobem byłoby wycięcie pliku .csv i użycie makra zawierającego VBA i ADO, który odbiera dane i umieszcza je bezpośrednio w arkuszu programu Excel. Źródłem może być dowolna baza danych zgodna z ODBC.

Excel 2010 zawiera dane >> Uzyskaj dane zewnętrzne - z różnych źródeł danych. Wolę jednak pisać własny kod, ponieważ mam absolutną kontrolę i mogę formatować wyniki w makrze. Odświeżanie odbywa się za pomocą jednego przycisku i możesz z nim zrobić wszystko.

Mógłbym podać kilka szczegółów, jeśli powiesz mi, z której bazy danych pochodzą dane.

PS Spójrz na listę sterowników w Dane >> Uzyskaj dane zewnętrzne >> Istniejące połączenia >> Przeglądaj więcej >> Nowe źródło >> Inne zaawansowane >> Dalej, który prowadzi do listy Właściwości łącza danych. Następnie musisz wiedzieć, jakiej źródłowej bazy danych i jakiego sterownika użyć. Możesz wysłać mi wiadomość e-mail na cliffbeacham w hotmailie, podając więcej szczegółów.

Cliff Beacham
źródło
2

Prostszym sposobem (dzięki temu postowi ) jest po prostu zaimportowanie danych, tak jak w przypadku pliku tekstowego, który już pobrałeś (tj. Data > Import Text File), Ale zamiast wpisywać nazwę pliku, zamiast tego wklej adres URL pliku CSV.

Andy Lynch
źródło
To jest przydatne. Jeśli zdalny plik się zmieni, wyobrażam sobie, że nie jest dynamicznie aktualizowany.
redaktor
To prawda - chociaż nadal obowiązują zwykłe opcje odświeżania w otwartych / co <x> minutach.
Andy Lynch,
0

Makro lub skrypt VBS wyglądałby tak (Excel2010 i nowsze):

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

To makro zostało faktycznie zarejestrowane przez Rejestrator makr Excel 2013. Możesz utworzyć przycisk, który wyzwala to makro.Rejestrator makr na pasku narzędzi od MS Excel 2013

Arthur Zennig
źródło