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: วิธีเพิ่มแผ่นงานใหม่