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

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir