Excel ไม่เคารพการตั้งค่าตัวคั่นสำหรับการอ่านหรือเขียนไฟล์ CSV


20

เมื่อบันทึก / เปิดไฟล์ CSV ใน Excel ตัวคั่นเริ่มต้นคือเซมิโคลอน (;) เนื่องจากฉันต้องการให้เป็นจุลภาค (,) ฉันพยายามเปลี่ยนโดยการเปลี่ยนการตั้งค่าภาษาและภูมิภาคตามโพสต์อื่น ๆ เกี่ยวกับปัญหานี้ ( เช่นวิธีการให้ Excel ตีความคอมมาเป็นตัวคั่นเริ่มต้นในไฟล์ CSV? )

อย่างไรก็ตามหลังจากเปลี่ยน List separtor ในการตั้งค่าเหล่านั้น Excel ของฉันยังคงบันทึกไฟล์ CSV ด้วยเครื่องหมายอัฒภาค เป็นเพราะ Excel ถูกติดตั้งแล้วในขณะที่ list list ของฉันถูกตั้งเป็นเซมิโคลอน หรือมีการตั้งค่าอื่นฉันหายไปที่นี่?

ขอบคุณล่วงหน้า.


มีปัญหาในการอ่านไฟล์ CSV ที่มีอยู่หรือสร้างไฟล์โดยใช้เครื่องหมายจุลภาคเป็นตัวคั่นหรือไม่
fixer1234

ทั้งสองฉันได้ทำสิ่งที่ @Raystafarian พูดถึงแล้วก่อนที่จะบันทึกไฟล์ใหม่ การตั้งค่าภูมิภาคของฉันถูกต้อง จากนั้นฉันเปิด Excel และบันทึกเป็น CSV และเมื่อฉันเปิดไฟล์ในแผ่นจดบันทึกฉันจะเห็นว่ามันใช้เครื่องหมายอัฒภาค ถ้าฉันเปิดใน Excel จะโหลดได้อย่างถูกต้องเพราะ Excel ยังคงใช้; สำหรับการแยกคอลัมน์
Sandra

คำตอบ:


35

ฉันพบปัญหา สัญลักษณ์ทศนิยมของฉันในการตั้งค่าภูมิภาคเป็นเครื่องหมายจุลภาค (ยุโรป) ดังนั้นแม้ว่าตัวคั่นรายการของฉันคือเครื่องหมายจุลภาค CSV จะถูกบันทึกด้วยเครื่องหมายอัฒภาค ตอนนี้ฉันเปลี่ยนสัญลักษณ์ทศนิยมของฉันเป็นจุดและตอนนี้ไฟล์ CSV ถูกสร้างอย่างถูกต้องด้วยเครื่องหมายจุลภาคเป็นตัวคั่น ฉันทดสอบสองครั้งและตอนนี้รู้ว่าจะต้องมีข้อยกเว้น: หากสัญลักษณ์ทศนิยมเป็นเครื่องหมายจุลภาคแล้วคั่นรายการจะเป็นเครื่องหมายอัฒภาคแม้จะมีการตั้งค่าเป็นอย่างอื่น


12
ขอบคุณที่สละเวลาในการอัพเดทโพสต์ด้วยคำตอบ
นักเรียนของ Gary

5

สำหรับการออม

คุณต้องปรับตัวแยกรายการเป็นภาษาและการตั้งค่าภูมิภาคก่อนบันทึกไฟล์ -

ป้อนคำอธิบายรูปภาพที่นี่


สำหรับการเปิด

ไปที่ข้อมูล - รับข้อมูลภายนอก - จากข้อความ

ป้อนคำอธิบายรูปภาพที่นี่

เลือกไฟล์

เลือกตัวคั่นกดถัดไป ป้อนคำอธิบายรูปภาพที่นี่

และเลือกตัวคั่น ด้วยเครื่องหมายจุลภาค

ป้อนคำอธิบายรูปภาพที่นี่

คลิกเสร็จสิ้น

ป้อนคำอธิบายรูปภาพที่นี่


หรือดึงเข้ามาจากนั้นใช้ข้อความถึงคอลัมน์ดูที่นี่


หากฉันอ่านคำถามถูกต้องดูเหมือนว่าปัญหากำลังสร้าง (บันทึก) ไฟล์ที่คั่นด้วยการใช้เครื่องหมายจุลภาคสำหรับตัวคั่น (ย่อหน้าที่ 2)
fixer1234

@ fixer1234 ใช่นั่นเป็นวิธีที่ฉันอ่านในตอนแรก แต่ฉันคิดว่าย่อหน้าแรกเป็นสิ่งสำคัญ ฉันไม่มีความคิดที่ถูกต้อง ไม่ว่าจะด้วยวิธีใดฉันไม่มีทางออกสำหรับการสร้างนอกเหนือจากที่ OP กล่าวถึงพวกเขาได้ลองไปแล้ว
Raystafarian

ใช่ฉันเปลี่ยนการตั้งค่าภูมิภาคก่อนบันทึกไฟล์ มันไม่ได้ช่วยอะไร เมื่อฉันได้รับไฟล์ CSV จากบุคคลอื่นซึ่งคั่นด้วยเครื่องหมายจุลภาคแล้วฉันจะใช้วิธีการของคุณในการนำเข้าข้อมูลอย่างถูกต้องจากนั้นฉันบันทึกและจะไปที่เครื่องหมายอัฒภาค มันน่ารำคาญเพราะทุกครั้งที่ฉันต้องไปที่ Notepad และแทนที่เครื่องหมายอัฒภาคทั้งหมดด้วยเครื่องหมายจุลภาคก่อนที่จะใช้ CSV ของฉันเป็นไฟล์นำเข้า
Sandra

0

นี่เป็นแมโครที่ดีมากที่ใช้งานได้ดี:

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

ค่อนข้างเก่า แต่ฉันพบปัญหาเดียวกัน:
มีตัวคั่น CSV พร้อมอัฒภาค ( ;) การตั้งค่าตัวคั่นระบบ (Windows) ตั้งเป็นอัฒภาค

  • หากฉันเปิด CSV ด้วยตนเองไฟล์จะถูกแยกออกอย่างถูกต้อง
  • ถ้าฉันปล่อย VBA ให้เปิดมันจะคั่นด้วยเครื่องหมายจุลภาคไม่ถูกต้อง

ใช้เห็นได้ชัดเท่านั้นทำงานร่วมกับDelimiter:=";".txt

อย่างไรก็ตามการใช้การLocal :=Trueแก้ไขปัญหาสำหรับฉัน:

Workbooks.Open(Filename:=fullpath, Local:=True)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.