Note: The other languages of the website are Google-translated. Back to English

Jak wsadowo konwertować wiele plików CSV na pliki XLS (X) w programie Excel?

Konwersja pliku CSV do pliku XlS lub XLSX jest bardzo łatwa dzięki zastosowaniu funkcji Zapisz jako. Jednak konwersja wielu plików CSV do plików XLS lub XLSX z folderu jest czasochłonna, ponieważ zapisuje się je ręcznie jeden po drugim. Tutaj przedstawiam kod makra, aby szybko wsadowo przekonwertować wszystkie pliki CSV na pliki XLS (x) z folderu.

Batch konwertuje pliki CSV na pliki XlS (X) z kodem makr


Batch konwertuje pliki CSV na pliki XlS (X) z kodem makr

Aby przekonwertować wiele plików CSV z jednego folderu na pliki XLS (X), możesz wykonać poniższe czynności:

1. Włącz nowy skoroszyt, naciśnij Alt + F11 klucze do otwarcia Microsoft Visual Basic for Applications okno i kliknij wstawka > Moduł. Zobacz zrzut ekranu:
wsadowa konwersja dokumentów cvs xls 1

Uwagi: Upewnij się, że wszystkie pliki CSV, które chcesz przekonwertować, są zamknięte.

2. Następnie wklej poniższy kod makra do pliku Moduł skrypt i naciśnij F5 klucz do uruchomienia kodu.

VBA: Konwertuj CSV na XLS

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3. W wyskakującym oknie dialogowym wybierz określony folder zawierający pliki CSV, które chcesz przekonwertować. Zobacz zrzut ekranu:
wsadowa konwersja dokumentów cvs xls 2

4. kliknij OK, wszystkie pliki CSV w wybranym folderze zostały przekonwertowane na pliki XLS w nim.
wsadowa konwersja dokumentów cvs xls 3

Wskazówka: Jeśli chcesz przekonwertować pliki CSV na pliki XLSX, użyj poniższego kodu VBA.

VBA: Konwertuj pliki CSV na XLSX

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

szybko konwertuj lub eksportuj zakres arkusza, aby oddzielić pliki XLS / Word / PDF lub inne w jednym czasie

Zwykle program Excel nie obsługuje opcji szybkiego eksportu lub zapisywania zakresu jako pliku CSV lub Excel. Jeśli chcesz zapisać zakres danych jako plik CSV lub skoroszyt w programie Excel, może być konieczne użycie do tego makra VBA lub skopiowanie zakresu do schowka i wklejenie go do nowego skoroszytu, a następnie zapisanie skoroszytu jako CSV lub Zeszyt ćwiczeń. Kutools dla programu Excel rozszerza program Excel o Eksportuj zakres do pliku narzędzie dla użytkowników Excela, którzy chcą szybko przetworzyć następujące operacje :  Kliknij, aby 30-dniowa, w pełni funkcjonalna bezpłatna wersja próbna!
doc eksportuj zakres komórek do pliku
 
Kutools dla programu Excel: z ponad 300 przydatnymi dodatkami do programu Excel, które można bezpłatnie wypróbować bez ograniczeń 30 dni.

Względne artykuły:


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (38)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę zrobić coś przeciwnego - przekonwertować XLS na CSV. czy ten skrypt działa?
Pod CSVtoXLS()
„Aktualizuj do”Extendoffice20170814
Dim xFd jako okno pliku
Dim xSPath jako ciąg
Dim xXLSFFile As String
Dim xWsheet jako ciąg
Application.DisplayAlerts = False
Application.StatusBar = Prawda
xWsheet = ActiveWorkbook.Nazwa
Ustaw xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Wybierz folder:"
Jeśli xFd.Show = -1 Wtedy
xSPath = xFd.SelectedItems(1)
Więcej
Exit Sub
End If
Jeśli Right(xSPath, 1) <> "\" Wtedy xSPath = xSPath + "\"
xXLSFile = Katalog (xSPath & "*.xls")
Rób, gdy xXLSFile <> ""
Application.StatusBar = "Konwertowanie: " & xXLSFfile
Workbooks.Open Nazwa pliku:=xSPath i xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Zamknij
Windows (xWsheet). Aktywuj
xXLSFlik = Kier
Pętla
Application.StatusBar = Fałsz
Application.DisplayAlerts = True
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
PodkonwertujCSVToXlsx()



Przyciemnij mój plik jako ciąg

Dim starafname As String, nowafname As String

Przyciemnij plik roboczy

Dim nazwa folderu jako ciąg



Application.DisplayAlerts = False

Application.ScreenUpdating = Fałsz



' Przechwyć nazwę bieżącego pliku

mójplik = ActiveWorkbook.Name



' Ustaw nazwę folderu do pracy

folderName = "D:\tmp\"



' Przejdź przez wszystkie pliki CSV w folderze

plik roboczy = Dir(nazwa_folderu i "*.CSV")

Wykonaj, gdy plik roboczy <> ""

' Otwórz plik CSV

Workbooks.Open Filename:=folderName i plik roboczy

' Przechwyć nazwę starego pliku CSV

oldfname = ActiveWorkbook.FullName

' Konwertuj na XLSX

newfname = nazwa_folderu i po lewej (ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Nazwa pliku:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Zamknij

' Usuń stary plik CSV

Zabij stare imię

Windows (mój plik). Aktywuj

plik roboczy = Dir()

Pętla



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
„Wskazówka: jeśli chcesz przekonwertować pliki CSV na pliki XLXS, wystarczy zmienić .xls na .xlsx w makrze ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, „.csv”, „.xls”, vbTextCompare).”

Próbowałem tego, a Excel nie mógł otworzyć wynikowych plików. Otrzymałem następujący komunikat: „Excel nie może otworzyć pliku 'nazwa_pliku.xlsx', ponieważ format pliku lub rozszerzenie pliku jest nieprawidłowy. Sprawdź, czy plik nie jest uszkodzony i czy rozszerzenie pliku jest zgodne z formatem pliku”.

Jednak skrypt pomyślnie przekonwertował na .xls.
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie znalazłem tego problemu wcześniej, dziękuję za poprawny komentarz. Poprawiłem wskazówkę.
Ten komentarz został zminimalizowany przez moderatora na stronie

Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo za doskonały skrypt dla CSV do XLS. Jest o wiele bardziej przydatny w mojej pracy
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Twój skrypt jest świetny, ale nie konwertuje pliku csv oddzielonego średnikami. Czy możesz opublikować rozwiązanie dla nich?

Dziękuję Ci
Ten komentarz został zminimalizowany przez moderatora na stronie
Przepraszam, tutaj nie mam żadnego rozwiązania, może możesz umieścić swoje pytanie na naszym forum, ktoś inny może ci pomóc. https://www.extendoffice.com/forum.html
Ten komentarz został zminimalizowany przez moderatora na stronie
Mogę się spóźnić właśnie dostałem problem, w którym musiałem przekonwertować pliki CSV ze średnikami i dodałem to do kodu i zadziałało, mam nadzieję, że to komuś pomoże

Zmień 'Workbooks.Open Filename:=xSPath & xCSVFile' na ten 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Ten komentarz został zminimalizowany przez moderatora na stronie
Użyłem pliku wielu csv do wielu xls, ale pomyliłem się w plikach xls de csv; oddzielne informacje, ale łączą się w komórki. Jak można to rozwiązać?
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod nie obsługuje pliku csv rozdzielanego przecinkami.
Ten komentarz został zminimalizowany przez moderatora na stronie
Kiedy podałem nazwę folderu, program powiedział: „Żadne pliki nie pasują do wyszukiwania”. Ale w folderze jest 2,609 plików .csv
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod nie obsługuje rozdzielonego przecinkiem pliku csv, czy w tym przypadku twoje pliki?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

świetny artykuł - dziękuję! U mnie prawie działa.

Oto problem: mam plik csv rozdzielany potokami. Zmieniłem domyślny ogranicznik okien (poprzez panel sterowania/ustawienia regionalne) na "|". Tak więc, kiedy otwieram plik csv w programie Excel, otwiera się, bezpośrednio odczytuje i analizuje pola poprawnie. Wszystko, co muszę zrobić, to zapisać jako xls lub xlsx, gotowe. Kiedy patrzę na twój kod, to powinno być to, co robi kod: otwiera pliki csv w folderze, zapisuje je jako xls lub xlsx i zapętla to.

Oto problem: kiedy otwieram te pliki Excela, ograniczniki potoku wciąż tam są, nic nie jest analizowane do kolumn. To było zachowanie jak przed moją zmianą domyślnego ustawienia rozdzielanego potokami w ustawieniach Windows. Wygląda więc na to, że program Excel nie używa tych ustawień systemu Windows. Zweryfikowałem to, zamieniając ograniczniki potoku na przecinki w kopii pliku — z dwóch plików rozdzielone pionową kreską pozostały nieprzeanalizowane, a rozdzielone przecinkami zostały poprawnie przekonwertowane.

Masz pomysł, gdzie można znaleźć lub zmienić to wbudowane w Excelu przecinki, albo czy jest na to sposób w kodzie? Wolałbym NIE szukać i zastępować, a potem zapisać...

Dzięki, HC
Ten komentarz został zminimalizowany przez moderatora na stronie
Jeśli chcesz podzielić dane na kolumnę na podstawie ogranicznika potoku w programie Excel, po prostu użyj funkcji Tekst na kolumny, aby podzielić dane według / po zakryciu plików csv do xls.
Ten komentarz został zminimalizowany przez moderatora na stronie
Tak naprawdę nie czyni kodu użytecznym dla plików Excela.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, świetny skrypt, który zadziałał dla mnie po wypróbowaniu wszystkich innych skryptów dostępnych w google. Dodałem jeszcze kilka linii, które wykonują operację tekstu na kolumny, którą chcę. Czy ktoś może mi pomóc, jak zmodyfikować skrypt, określając lokalizację folderu na dysku lokalnym zamiast otwierania okna dialogowego, ponieważ w rzeczywistości automatyzuję system
. Z góry dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi
Czy mógłbyś udostępnić skrypt, który wykonuje tekst na kolumny?
Z poważaniem
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetny skrypt po przeszukaniu wszystkich innych skryptów dostępnych w google. Czy ktoś może pomóc w zmodyfikowaniu tego skryptu, określając lokalizację folderu na dysku lokalnym, zamiast pozwalać mu na otwarcie okna dialogowego, ponieważ faktycznie automatyzuję system. Z góry dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Fajny kawałek kodu. Bardzo przydatne. Jeśli się nie mylę kod dla .xlsx wygląda tak samo jak kod .xls.

Ta linia:
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Zakładam, że powinno to być: ".csv", ".xlsx", vbTextCompare itp.
Ten komentarz został zminimalizowany przez moderatora na stronie
Zmieniłem kod tak, jak opisano powyżej; teraz skrypt działa zgodnie z oczekiwaniami: generuje pliki xlsx
Ten komentarz został zminimalizowany przez moderatora na stronie
nie, nie masz. nadal mówi xls w obu wersjach.
Ten komentarz został zminimalizowany przez moderatora na stronie
to makro nie pokazuje mojego pliku csv
Ten komentarz został zminimalizowany przez moderatora na stronie
Jednym małym problemem z tym kodem jest to, że pewna dokładność (liczba miejsc po przecinku) może zostać utracona podczas otwierania pliku csv i zapisywania go jako xlsx.
Sposobem, aby temu zapobiec, jest zaznaczenie wszystkich komórek zaraz po otwarciu, ustawienie liczby miejsc po przecinku na pożądaną wartość (15 dla mnie osobiście), a następnie *zapisanie jako xlsx

W przeciwnym razie xlsx ma mniej szczegółów (mniejszą dokładność pod względem miejsc dziesiętnych) niż oryginalny csv, co może prowadzić do problemów w niektórych aplikacjach
Ten komentarz został zminimalizowany przez moderatora na stronie
zmienia mój format kolumny daty z dd-mm-rrrr na dd/mm/rrrr.
Dziękuję bardzo.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, viper, po konwersji możesz je sformatować z powrotem, wybrać daty i kliknąć prawym przyciskiem myszy, aby wybrać Formatowanie komórek z menu kontekstowego, w oknie dialogowym Formatowanie komórek, na karcie Numer, kliknij Niestandardowe na liście Kategoria, a następnie wpisz mm-dd- rrrr do pola tekstowego w prawej sekcji. Lub jeśli masz Kutools dla programu Excel, zastosuj formatowanie daty Zastosuj, aby zmienić format daty według potrzeb.
Ten komentarz został zminimalizowany przez moderatora na stronie
świetny artykuł. Jak mogę zapisać wszystkie przekonwertowane pliki w nowej lokalizacji? Czy możesz zaktualizować kod i przesłać go do mnie. Na przykład umożliwienie użytkownikowi wyboru folderu docelowego.


Podziękowania
Ten komentarz został zminimalizowany przez moderatora na stronie
Masz błąd w linii 22 csv do xlsx
Z błędem — ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Poprawione — ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję za przypomnienie, zaktualizowałem je, jeszcze raz dziękuję.
Ten komentarz został zminimalizowany przez moderatora na stronie
Otrzymuję błąd „Zmienna obiektu lub z nieustawioną zmienną blokową” dla tej linii:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> to ścieżka do konkretnego folderu na moim komputerze, w którym dokonuję konwersji (folder zawiera kilka plików csv )

Czy robię coś złego tutaj?
Ten komentarz został zminimalizowany przez moderatora na stronie
U mnie to działa, ale rozszerzenie pliku się nie zmienia. Jakieś wskazówki?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dla mnie to samo — wszystkie pliki pozostają w formacie .csv.
Ten komentarz został zminimalizowany przez moderatora na stronie
Wszystkie wybrane pliki csv zostały zapisane jako nowe pliki programu Excel, oryginalne pliki (csv) nie ulegają zmianie, istnieją nowe pliki programu Excel o tej samej zawartości.
Ten komentarz został zminimalizowany przez moderatora na stronie
Miałem ten sam problem. Jeśli twój plik źródłowy ma rozszerzenie pisane wielkimi literami (.CSV), to nie działa. Po prostu zamień .csv na .CSV w kodzie w linii 22 i wtedy powinno działać. Cóż, przynajmniej dla mnie tak.
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak włączyć kod do procedury pliku wsadowego XLSX, aby średnikiem oddzielić dane na osobne kolumny? Udostępniony kod konwertuje plik z .csv na .xlsx, ale nie rozdziela danych na osobne kolumny.
Ten komentarz został zminimalizowany przez moderatora na stronie
tak, to nie działa.
Ten komentarz został zminimalizowany przez moderatora na stronie
Buenos dias Compañeros

Adiciona a lo que hace el script, quisiera poder convertir inmediatamente el texto en columnas, por la opción que no es delimitado por ningún tipo de caracter, adicional los tamaños de las columnas son diferentes. Vale la pena aclarar que si tomo cada archivo por separado y le aplico la opción de texto en columnas, bajo esa opción los puedo convertir sin problemas, abriéndolos uno por uno, pero si grabo esa macro y le aplico la misma macro inclusive a todos, usando la opción de „USAR REFERENCIAS RELATIVAS”, no hace el proceso bien, porque el graba las posiciones de la delimitación del archivo que uso de ejemplo, pero necesito que lo aplique nuevo a cada archivo, es decivoe nuevo archivo, coda si y le hiciera manualmente la opción de delimitación y no aplique los valores de ubicación de las columnas identificados en el archivo ejemplo.

Ya inserte esa opcion en este archivo, sin embargo pasa lo que indico en la lineas arriba, solo requiero sabre como puedo hacer para aplicar la conversion a cada archivo, aplicando la delimitacion del campo como su fuera un archivo nuevo.


Workbooks.Open Nazwa pliku:=xSPath i xCSVFile
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGUE APLICANDO EL FORMATO DEL TEXTO A COLUMNAS

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(18 _
, 1), Tablica (38, 1)), KońcoweMinusNumbers:=True
AktywnaKomórka.Komórki.Wybierz
ActiveCell.Cells.Cała kolumna.AutoFit
ActiveCell.Offset(1, 0).Range("A1").Wybierz
ActiveWorkbook.Save

HASTA AQUI ZGADZAM SIĘ Z TOBĄ

ActiveWorkbook.Zamknij
Windows (xWsheet). Aktywuj
xCSVFile = Katalog

Pętla
Application.StatusBar = Fałsz
Application.DisplayAlerts = True
End Sub

No se si me hago explicar bien, pero es mi problema.
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL