Excel nie uznaje ustawienia ogranicznika do odczytu lub zapisu plików CSV


20

Podczas zapisywania / otwierania plików CSV w programie Excel domyślnym separatorem jest średnik (;), ponieważ muszę to być przecinek (,) Próbowałem to zmienić, zmieniając ustawienia języka i regionu po kilku innych postach na ten temat ( tj. Jak przekonać Excela do interpretowania przecinka jako domyślnego separatora w plikach CSV? ).

Jednak po zmianie separtora listy w tych ustawieniach mój program Excel zapisuje pliki CSV ze średnikiem. Czy to dlatego, że program Excel został zainstalowany, gdy mój separator listy został ustawiony jako średnik? a może brakuje mi innego ustawienia?

Z góry dziękuję.


Czy problem polega na odczycie istniejących plików CSV lub utworzeniu pliku przy użyciu przecinka jako separatora?
fixer1234

Obie zrobiłem już to, o czym wspomniał @Raystafarian przed zapisaniem nowego pliku. Moje ustawienia regionalne są prawidłowe. Następnie otwieram program Excel i zapisuję jako CSV, a kiedy otwieram plik w notatniku, widzę, że użył średnika. Jeśli otworzę w programie Excel, ładuje się poprawnie, ponieważ program Excel nadal używa polecenia; do oddzielania kolumn.
Sandra

Odpowiedzi:


35

Znalazłem problem. Mój symbol dziesiętny w ustawieniach regionalnych był także przecinkiem (europejskim), więc nawet gdy mój separator listy był przecinkiem, CSV został zapisany ze średnikami. Teraz zmieniłem mój symbol dziesiętny na punkt, a teraz plik CSV jest poprawnie tworzony z przecinkami jako separatorami. Testowałem to dwa razy i teraz wiem, że musi istnieć wyjątek: jeśli symbolem dziesiętnym jest przecinek, to separatorem listy będzie średnik, nawet jeśli jest ustawiony inaczej.


12
Dziękujemy za poświęcenie czasu na aktualizację posta z odpowiedzią.
Gary's Student

5

Do oszczędzania

Przed zapisaniem pliku należy dostosować separator listy w ustawieniach językowych i regionalnych -

wprowadź opis zdjęcia tutaj


Do otwierania

Idź do danych - Uzyskaj dane zewnętrzne - z tekstu

wprowadź opis zdjęcia tutaj

wybierz plik

Wybierz rozdzielany , naciśnij dalej wprowadź opis zdjęcia tutaj

i wybierz separator przecinek

wprowadź opis zdjęcia tutaj

Kliknij koniec

wprowadź opis zdjęcia tutaj


Lub wciągnij go, a następnie użyj tekstu, aby zobaczyć kolumny tutaj


Jeśli dobrze przeczytam pytanie, wygląda na to, że problem polega na utworzeniu (zapisaniu) pliku rozdzielanego za pomocą przecinków dla separatora (akapit drugi).
fixer1234

@ fixer1234 tak, tak to najpierw przeczytałem. Ale potem pomyślałem, że pierwszy akapit był ważny. Nie mam pojęcia, co jest poprawne. Tak czy inaczej, nie mam innego rozwiązania dla stworzenia niż to, o czym wspominał PO, że już próbowali.
Raystafarian

Tak, zmieniłem ustawienia regionalne przed zapisaniem pliku. To nie pomogło. Kiedy otrzymuję pliki CSV od innych osób, które są rozdzielane przecinkiem, używam twojej metody do prawidłowego importowania danych, a następnie zapisuję i przechodzi do średnika. To denerwujące, ponieważ za każdym razem, gdy muszę używać notatnika, zastępuję wszystkie średniki przecinkami, zanim użyję mojego pliku CSV jako pliku importu.
Sandra

0

Oto bardzo ładne makro, które działa całkiem dobrze:

Sub saveCSV()
File = Application.GetSaveAsFilename(InitialFileName:="file.csv", FileFilter:="CSV (*.csv), *.csv")
ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlCSV, CreateBackup:=False, local:=False
End Sub

0

To jest trochę stare, ale natknąłem się na ten sam problem:
miałem CSV oddzielony średnikiem ( ;). Ustawienia separatora systemu (Windows) również są ustawione na średnik.

  • Jeśli otworzyłem CSV ręcznie, plik został poprawnie rozdzielony.
  • Jeśli pozwolę VBA go otworzyć, niepoprawnie oddzielił go przecinkiem.

Korzystanie Delimiter:=";"najwyraźniej działa tylko z .txt.

JEDNAK, używając Local :=Truerozwiązał problem dla mnie:

Workbooks.Open(Filename:=fullpath, Local:=True)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.