Vba: sayfaları csv dosyaları olarak kaydetme (örnekle)
Bir çalışma kitabının her sayfasını bir CSV dosyasına kaydetmek için VBA’da aşağıdaki sözdizimini kullanabilirsiniz:
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
Bu özel makro, şu anda etkin olan çalışma kitabının her sayfasını bir CSV dosyasına kaydedecektir.
CSV dosyaları SaveDir değişkeninde belirtilen yola kaydedilecektir.
Not : Application.DisplayAlerts=False satırı, VBA’ya dosyaları kaydederken Excel’deki tüm ekran uyarılarını geçici olarak devre dışı bırakmasını söyler.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: VBA Kullanarak Sayfaları CSV Dosyaları Olarak Kaydetme
Diyelim ki iki sayfalı bir Excel çalışma kitabımız var.
İlk sayfanın adı player_stats’tır ve farklı basketbolcularla ilgili istatistikleri içerir:
İkinci sayfanın adı Team_info’dur ve farklı basketbol takımları hakkında bilgiler içerir:
Diyelim ki bu sayfaların her birini bilgisayarımızın masaüstüne ayrı CSV dosyaları olarak kaydetmek istiyoruz.
Bunun için aşağıdaki makroyu oluşturabiliriz:
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
Bu makro çalıştırıldığında her sayfa masaüstümüze CSV dosyası olarak kaydedilecektir.
Bilgisayarımın masaüstüne gidersem, sayfa adlarıyla eşleşen dosya adlarına sahip bu ayrı CSV dosyalarının her birini görebilirim:
Player_stats CSV dosyasını Notepad kullanarak açarsam Excel dosyasındaki değerlerin virgülle ayrılmış değerler olarak kaydedildiğini görebiliyorum:
Bu örnekte çalışma kitabımıza iki sayfayı ayrı CSV dosyaları olarak kaydedebildiğimizi, ancak aynı makronun herhangi bir sayıda sayfayla çalışacağını unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
VBA: Bir çalışma kitabındaki sayfaların sayısı nasıl sayılır?
VBA: Başka bir çalışma kitabından veri nasıl çıkarılır
VBA: Yeni sayfalar nasıl eklenir