Vba: วิธีบันทึกชีตเป็นไฟล์ csv (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อบันทึกเวิร์กบุ๊กแต่ละแผ่นเป็นไฟล์ CSV:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

มาโครนี้จะบันทึกแต่ละแผ่นงานของสมุดงานที่ใช้งานอยู่ในปัจจุบันเป็นไฟล์ CSV

ไฟล์ CSV จะถูกบันทึกในเส้นทางที่ระบุในตัวแปร SaveDir

หมายเหตุ : บรรทัด Application.DisplayAlerts=False จะบอก VBA ให้ปิดใช้งานการแจ้งเตือนการแสดงผลทั้งหมดใน Excel ชั่วคราวเมื่อบันทึกไฟล์

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: บันทึกชีตเป็นไฟล์ CSV โดยใช้ VBA

สมมติว่าเรามีสมุดงาน Excel ที่มีสองแผ่นงาน

แผ่นงานแรกเรียกว่า player_stats และมีสถิติเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:

แผ่นงานที่สองเรียกว่า team_info และมีข้อมูลเกี่ยวกับทีมบาสเก็ตบอลต่างๆ:

สมมติว่าเราต้องการบันทึกแต่ละแผ่นงานเหล่านี้เป็นไฟล์ CSV แยกกันบนเดสก์ท็อปของคอมพิวเตอร์ของเรา

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

เมื่อดำเนินการมาโครนี้แล้ว แต่ละชีตจะถูกบันทึกเป็นไฟล์ CSV บนเดสก์ท็อปของเรา

ถ้าฉันไปที่เดสก์ท็อปของคอมพิวเตอร์ ฉันจะเห็นไฟล์ CSV แต่ละไฟล์ที่มีชื่อไฟล์ที่ตรงกับชื่อชีต:

หากฉันเปิดไฟล์ CSV player_stats โดยใช้ Notepad ฉันจะเห็นว่าค่าในไฟล์ Excel ถูกบันทึกเป็นค่าที่คั่นด้วยเครื่องหมายจุลภาค:

โปรดทราบว่าในตัวอย่างนี้ เราสามารถบันทึกสองแผ่นงานลงในสมุดงานของเราเป็นไฟล์ CSV แต่ละไฟล์ได้ แต่มาโครเดียวกันนี้จะทำงานกับแผ่นงานกี่แผ่นก็ได้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีนับจำนวนแผ่นงานในสมุดงาน
VBA: วิธีดึงข้อมูลจากสมุดงานอื่น
VBA: วิธีเพิ่มแผ่นงานใหม่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *