Excel, CSV dosyalarını okumak veya yazmak için sınırlayıcı ayarını onurlandırmaz


20

CSV dosyalarını Excel'de kaydederken / açarken, varsayılan ayırıcı noktalı virgül (;), virgül olması gerektiğinden (,) Bu konuyla ilgili birkaç gönderiyi izleyerek Dil ve Bölgesel ayarları değiştirerek değiştirmeye çalıştım ( Örneğin , Excel'in virgülün CSV dosyalarında varsayılan sınırlayıcı olarak yorumlanması nasıl sağlanır? ).

Ancak, bu ayarlarda Liste ayırıcıyı değiştirdikten sonra Excel'im, CSV dosyalarını noktalı virgülle kaydetmeye devam ediyor. Liste ayırıcım noktalı virgül olarak ayarlıyken Excel'in yüklü olması nedeniyle mi? veya burada özlediğim başka bir ayar var mı?

Şimdiden teşekkür ederim.


Mevcut CSV dosyalarını okurken veya sınırlayıcı olarak virgül kullanarak bir tane oluştururken sorun mu var?
fixer1234

Her ikisi de, yeni bir dosyayı kaydetmeden önce @ Raystafarian'ın bahsettiği şeyi zaten yaptım. Bölgesel ayarım doğru. Sonra Excel'i açıp CSV olarak kaydetiyorum ve dosyayı not defterinde açtığımda noktalı virgül kullandığını görebiliyorum. Excel'de açarsam, Excel hala kullandığı için doğru yüklenmiyor; sütunları ayırmak için.
Sandra,

Yanıtlar:


35

Sorunu buldum. Bölgesel ayarlardaki ondalık sembolüm de virgül (Avrupa) idi, bu yüzden, Liste ayırıcım virgül olsa bile, CSV noktalı virgüllerle kaydedildi. Şimdi ondalık sembolümü bir noktaya değiştirdim ve şimdi CSV dosyası virgüllerle ayırıcılar olarak doğru bir şekilde oluşturuldu. Bunu iki kez test ettim ve şimdi bir istisna olması gerektiğini biliyorum: ondalık sembol virgül ise, liste ayırıcı aksi belirtilmiş olsa bile noktalı virgül olur.


12
Gönderiyi bir cevapla güncellemeye zaman ayırdığınız için teşekkür ederiz.
Gary'nin Öğrenci

5

Tasarruf için

Dosyayı kaydetmeden önce liste ayırıcısını dilde ve bölgesel ayarlarda ayarlamanız gerekir.

görüntü tanımını buraya girin


Açmak için

Veriye Git - Dış Veri Al - Metinden

görüntü tanımını buraya girin

dosyayı seç

Sınırlandırılmış seçin , ileri tuşuna basın görüntü tanımını buraya girin

ve sınırlandırıcı virgülünü seçin

görüntü tanımını buraya girin

Tıklayın bitirmek

görüntü tanımını buraya girin


Ya da içeri çekin ve sonra burada görülen sütunları görmek için metni kullanın.


Doğru soruyu okursam, sorun sınırlayıcı için virgül kullanarak ayrılmış bir dosya (2. paragraf) oluşturuyor (kaydediyor) gibi görünüyor.
fixer1234

@ fixer1234 evet ilk önce böyle okudum. Ama sonra ilk paragrafın önemli olduğunu düşündüm. Hangisinin doğru olduğunu bilmiyorum. Her iki durumda da, yaratılış için OP'nin zaten denediklerini söylediklerinden başka bir çözümüm yok.
Raystafarian

Evet, dosyayı kaydetmeden önce bölgesel ayarları değiştirdim. Yardım etmedi. Virgülle ayrılmış diğer kişilerden CSV dosyaları aldığımda, verileri doğru şekilde içe aktarmak için yönteminizi kullanırım, sonra kaydederim ve noktalı virgül olur. Bu can sıkıcı çünkü CSV'mi bir içe aktarma dosyası olarak kullanmadan önce her zaman not defterine gitmem ve tüm noktalı virgülleri virgüllerle değiştirmem gerekiyor.
Sandra,

0

İşte oldukça iyi çalışan çok güzel bir makro:

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

Bu biraz eski ama aynı problemle karşılaştım:
noktalı virgülle ( ;) ayrılmış bir CSV vardı . Sistem ayırıcı ayarları (Windows) da noktalı virgül olarak ayarlanmıştır.

  • CSV'yi manuel olarak açtıysam, dosya doğru şekilde ayrıldı.
  • VBA'nın açmasına izin verirsem, yanlış bir virgülle ayırdı.

Kullanılması Delimiter:=";"görünüşte sadece çalışır .txt.

Ancak, Local :=Truebenim için kullanarak sorunu çözdü:

Workbooks.Open(Filename:=fullpath, Local:=True)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.