UserForm Listbox Verilerini PDF yada XLS Olarak Kaydetme hk.

goksen34

Altın Üye
Katılım
3 Eylül 2024
Mesajlar
6
Excel Vers. ve Dili
Office 365 64bit / Office 2016 64bit
Altın Üyelik Bitiş Tarihi
22-09-2029
Herkese merhabalar,
Mevcut olan VBA ile yapılmış olan bir excel dosyası mevcut. Bu excel dosyasında misafirlerin yada personellerin araç kullanımlarının kayıt altına tutulmakta.
Bu kayıtları resimde gördüğünüz gibi görüntüleyebilmekteyiz. Arka planda bir excel dosyasına kayıt olmakta.
Bu veriler her ay sonu aylık filtrelenerek ekran görüntüsü alarak müdüriyet tarafına gönderilmekte. İlk başlarda 2 3 ekran görüntüsü ile mail atıyorken şimdi 9-10 ekran görüntüsüne ulaştı ve bu zamanlada artmaya devam etmekte.

Benden istenilen bu ekran görüntüsü ile rapor vermeyi sonlandırmak ve bunları normal bir excel formatında mail göndermek.

Resimdeki userformda ay olarak filtreleme mevcut. Filtreleme yaptıktan sonra bir button ekleyip o filtrelenen verileri dışa nasıl aktarabilirim yada yazdırabilirmiyim?
Yardımlarınızı rica ediyorum.
Teşekkürler

Userform screen
 
Katılım
6 Mart 2024
Mesajlar
110
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,

Kodların özeti:
Yeni bir Excel sayfası oluştur
Bu sayfaya ListBox verilerini yaz
Sayfayı PDF e dönüştür.
yeni oluşturup içine verileri yazdığımız Excel sayfasını SİL.

C++:
Private Sub RaporButton_Click()
    ' Geçici sayfayı oluştur ve referans al
    Dim tempSheet As Worksheet
    Set tempSheet = Sheets.Add(After:=ActiveSheet)

    Dim i As Integer
    Dim j As Integer
    Dim sutunSayisi As Integer
    sutunSayisi = 7 ' ListBox'taki sütun sayısı

    For i = 0 To Me.MyListBoxName.ListCount - 1 ' ListBox adını(MyListBoxName) doğru referanslayın
        For j = 0 To sutunSayisi - 1 ' 0 dan başlandığı için -1 çıkarıyoruz
            tempSheet.Cells(i + 1, j + 1).Value = Me.MyListBoxName.List(i, j) ' ListBox adını(MyListBoxName) doğru referanslayın
        Next j
    Next i

    ' Sayfayı Rapor.pdf ismiyle aktif olan Excel dosyasının olduğu klasöre kaydet ve aç
    tempSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\Rapor.pdf", OpenAfterPublish:=True ' OpenAfterPublish:=False Dosyayı açmaz

    ' Sayfayı silerken uyarıyı kapat
    Application.DisplayAlerts = False
    tempSheet.Delete ' sayfayı sil
    Application.DisplayAlerts = True

    ' Bellek temizliği
    Set tempSheet = Nothing

End Sub
Ben PDF dosyası yaptım siz Excel dosyası da yapabilirsiniz
Hatta bu dosyayı direk mail atabilirsiniz artık isteğinize göre değişir.

Oluşan Rapor.pdf dosya Dizaynını daha düzgün olmasını isterseniz
manuel olarak :
Dizaynı düzgün bir Şablon sayfası yaparsınız

vba kodlarla da :
ilk Şablon sayfasını Kopyalayıp, verileri buraya yazıp, Rapor.pdf kaydedip, kopyayı silersiniz
Şablon sayfanız hali hazırda tertemiz bekler
 
Son düzenleme:

goksen34

Altın Üye
Katılım
3 Eylül 2024
Mesajlar
6
Excel Vers. ve Dili
Office 365 64bit / Office 2016 64bit
Altın Üyelik Bitiş Tarihi
22-09-2029
Merhaba,

Kodların özeti:
Yeni bir Excel sayfası oluştur
Bu sayfaya ListBox verilerini yaz
Sayfayı PDF e dönüştür.
yeni oluşturup içine verileri yazdığımız Excel sayfasını SİL.

C++:
Private Sub RaporButton_Click()
    ' Geçici sayfayı oluştur ve referans al
    Dim tempSheet As Worksheet
    Set tempSheet = Sheets.Add(After:=ActiveSheet)

    Dim i As Integer
    Dim sutunSayisi As Integer
    sutunSayisi = 7 ' ListBox'taki sütun sayısı

    For i = 0 To Me.MyListBoxName.ListCount - 1 ' ListBox adını(MyListBoxName) doğru referanslayın
        For j = 0 To sutunSayisi - 1 ' 0 dan başlandığı için -1 çıkarıyoruz
            tempSheet.Cells(i + 1, j + 1).Value = Me.MyListBoxName.List(i, j) ' ListBox adını(MyListBoxName) doğru referanslayın
        Next j
    Next i

    ' Sayfayı Rapor.pdf ismiyle aktif olan Excel dosyasının olduğu klasöre kaydet ve aç
    tempSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\Rapor.pdf", OpenAfterPublish:=True ' OpenAfterPublish:=False Dosyayı açmaz

    ' Sayfayı silerken uyarıyı kapat
    Application.DisplayAlerts = False
    tempSheet.Delete ' sayfayı sil
    Application.DisplayAlerts = True

    ' Bellek temizliği
    Set tempSheet = Nothing

End Sub
Ben PDF dosyası yaptım siz Excel dosyası da yapabilirsiniz
Hatta bu dosyayı direk mail atabilirsiniz artık isteğinize göre değişir.

Oluşan Rapor.pdf dosya Dizaynını daha düzgün olmasını isterseniz
manuel olarak :
Dizaynı düzgün bir Şablon sayfası yaparsınız

vba kodlarla da :
ilk Şablon sayfasını Kopyalayıp, verileri buraya yazıp, Rapor.pdf kaydedip, kopyayı silersiniz
Şablon sayfanız hali hazırda tertemiz bekler
Öncelikle bilginize emeğinize sağlık. Haftalardır çözmeye çalıştığım sorunuma yardımcı oldunuz çok teşekkür ederim. Son bir sorum olacak; PDF yerine excel dosyası olarak yapmak istesem neyi değiştirmem gerek?
 
Katılım
6 Mart 2024
Mesajlar
110
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,
Excel dosyası Rapor.xlsx olarak kaydetmek için
C++:
Private Sub RaporButton_Click()
    ' Geçici sayfayı oluştur ve referans al
    Dim tempSheet As Worksheet
    Set tempSheet = Sheets.Add(After:=ActiveSheet)

    Dim i As Integer
    Dim j As Integer
    Dim sutunSayisi As Integer
    sutunSayisi = 2 ' ListBox'taki sütun sayısı

    For i = 0 To Me.PdfListBox.ListCount - 1 ' ListBox adını(PdfListBox) doğru referanslayın
        For j = 0 To sutunSayisi - 1 ' 0 dan başlandığı için -1 çıkarıyoruz
            tempSheet.Cells(i + 1, j + 1).Value = Me.PdfListBox.List(i, j) ' ListBox adını(PdfListBox) doğru referanslayın
        Next j
    Next i

    Dim RaporYolAd As String
    RaporYolAd = ActiveWorkbook.Path & "\Rapor.xlsx"
   
    ' Aynı isimde dosya varsa sorulacaktır üstüne kaydedeyim mi diye !
    ' Application.DisplayAlerts = False, True sordurmadan üstüne kaydebilirsiniz veya
    ' dosya isminin sonuna Zaman ekleyip her seferinde farklı isim de dosya yapabilirsiniz veya
    ' msgbox vbOKCancel ile başta siz kontrol edebilirsiniz veya
    ' en başta kullanıya Dosyanın ismini belirlemesini sağlayabilirsiniz veya ...
    tempSheet.Copy
    ActiveWorkbook.SaveAs Filename:=RaporYolAd, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWorkbook.Close SaveChanges:=False

    ' Sayfayı silerken uyarıyı kapat
    Application.DisplayAlerts = False
    tempSheet.Delete ' Sayfayı sil
    Application.DisplayAlerts = True

    ' Bellek temizliği
    Set tempSheet = Nothing
   
    MsgBox "Rapor Oluşturuldu.", vbInformation, "Rapor OK"

End Sub
 
Üst