Excel Listeyi Her Kayda Göre PDF Oluşturma...

Kodla Büyü

s_kajmeran

Hiperaktif Üye
Hiperaktif
Mesajlar
3,863
Excelde bir listem var

AdıSoyadı-1. Not-2. Not-3. Not-...-10. No

1. Kişi.

2.kişi.

500.kişi



Bunları düşey ara formülü ile 1 yazdığımda 1. nin grafiğini, 2 yazarsam 2. sıradakinin grafiğini çizdiriyorum. Tek tek inceleyebiliyorum sorun yok. Ben tüm sınıfın grafiğini otomatik oluşturup tek PDF olarak almak istiyorum.

Sorun şu ben ilk 50 kişinin tek tek oluşturacağım grafiğini toplu olarak PDF olarak kaydettirebilir miyim?

Yani makro ilgili alana 1 yazacak onun grafiğini, ardından 2 yazacak onu bu şekilde 50 tane grafik oluşturup tek PDF olarak bana verecek.
 
Excel dosyasını atıp daha açıklayıcı hangi verilerin grafiğini oluşturacağını yazar mısın? Kod yazalım.
 
ekran-alintisi-png.69900


No giriniz kısmındaki 9 değişince sayfa 1'deki verilere göre yeniden düzenleniyor sayfa. Ben o 9 yazan kısmı sırasıyla önceki sayfadaki verilerle doldursun ve oluşan tüm sayfaları pdf olarak kaydetsin istiyorum.

Ekte örnek excel dosyası var
 

Ekli dosyalar

  • Örnek.rar
    10.8 KB · Görüntüleme: 15
  • Ekran Alıntısı.PNG
    Ekran Alıntısı.PNG
    14.1 KB · Görüntüleme: 363
Hocam teşekkür ederim uğraşıp zaman ayırmışsınız... Ben 2 sayfanın tamamı pdf de gözüksün istiyorum Yandaki tablo, ad soyad vs.

kurcalamaya çalışacağım. tekrar teşekkürler....
 
Hocam teşekkür ederim uğraşıp zaman ayırmışsınız... Ben 2 sayfanın tamamı pdf de gözüksün istiyorum Yandaki tablo, ad soyad vs.

kurcalamaya çalışacağım. tekrar teşekkürler....
İki sayfa derken? Şu an 500 kayıt için de grafik oluşturup tek pdf de 500 sayfalık grafik oluşturuyor. Ama sen özelleştirmeye bakabilirsin fikir sahibi olduysam sıkıntı yok kardeşim. Öğrencinin not değerlerini aşağıdaki gibi altta tablo olarak gösterebilirsin grafikte. matplotlib e biraz bak çözersin. İyi çalışmalar.
 

Ekli dosyalar

  • line_plot_table_data.png
    line_plot_table_data.png
    28.3 KB · Görüntüleme: 28
Son düzenleme:
Eyvallah hocam. Kurcalayacağım. Tekrar teşekkürler...
Excel vbasic ile de yapılabilmesi diye düşünüyorum. Öyle daha düzgün bişey olacak.
Tekrar tekrar teşekkürler hocam..
 
Ne yazık ki excel ile dediğinizi o şekilde yapamazsınız ama her öğrenci için ayrı pdf oluşturup, ardından bu pdf dosyalarını PDF birleştiren program ya da siteler üzerinden birleştirebilirsiniz.
Eklediğim dosyadaki makro dosyanın bulunduğu klasörde bulunan "pdfler" isimli klasörde her öğrenci için pdf dosyaları oluşturmaktadır. Dosyayı bir inceleyin.
Dosyayı kullanırken dikkat etmeniz gereken PDF oluştur düğmesine tıklamadan önce pdfler klasörünü boşaltmanızdır. Aksi halde üzerine yazma durumundan dolayı hata oluşacaktır. PDF'leri oluşturduktan sonra pdf birleştirici uygulamalarla birleştirirsiniz.
Dosyayı indirmeyip, kodları incelemek isteyenler için ise kod:
Kod:
Sub pdf_olustur()
Dim dosyaadi As String
 For Each okulno In Sayfa1.Range("a2:a1000")
        If okulno.Value <> "" Then  'okulno varsa
            Sayfa2.Range("b2").Value = okulno.Value
            dosyaadi = ThisWorkbook.Path + "\pdfler\" + Format(Sayfa2.Range("b2").Value, "0####") + ".pdf"
            Sayfa2.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                dosyaadi, Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next
End Sub
Kod a2:a1000 arasındaki hücreleri kullanır. Dosya kaydetme işlemi bilgisayarın performansına göre zaman alacağından çok fazla öğrenciniz varsa pdf dosyalarının oluşturulması biraz zaman alabilir, o yüzden sabırla kodun çalışmasını bitirmesini bekleyin.
 

Ekli dosyalar

  • pdfolustur.zip
    54.7 KB · Görüntüleme: 7
Hocam çok çok teşekkürler... Denedim çalışıyor. İnşallah birde tek PDF gibi tuatabilirsem mükemmel olacak. 400 dosyayı birleştirmekde zorlanıyor bilgisayar
 
Dosyayı güncelledim. Artık verileri sayfa2'de sayfalar halinde oluşturup, tek bir dosya olarak pdf'ye dönüştürüyor.
Yalnız sayfa2'deki düşeyara fonksiyonlarını mutlak adreslemeden bağıl adreslemeye dönüştürmek gerekti. Çünkü kopyala/yapıştır sonucunda formül adreslerinin değişmesi gerekiyordu.
PDF oluştur düğmesine tıklayınca 17. satırdan 65000 inci satıra kadar olan alanı siliyor. Ardından kopyala yapıştır ile veri alanını çoğaltıyor. son olarak da pdf'ye dönüştürüyor. pdfler klasöründe ogrencinotlari.pdf dosyasının düğmeye tıklanmadan önce silinmesi lazım, bunu unutmayın.
Kodlar:
Kod:
Sub pdf_olustur()
 Dim dosyaadi As String
 Dim ilk As Boolean
 ilk = True
 Dim satir As Integer
 satir = 0
 
 Application.ScreenUpdating = False 'yapılan işlemler görünmesin
 
 Rows("17:20000").Select 'fazlalık verileri sil
 Selection.Delete Shift:=xlUp
                
 For Each okulno In Sayfa1.Range("a2:a1000")
        If okulno.Value <> "" Then  'okulno varsa
            If ilk = True Then
                ilk = False
                Sayfa2.Range("b2").Value = okulno.Value
            Else

                Sayfa2.Range("A1:I15").Select
                Selection.Copy 'verilerin olduğu hücreleri kopyala
                satir = satir + 17 '17 satır aşağıya git ve verileri yapıştır
                Sayfa2.Cells(satir, 1).Select
                ActiveSheet.Paste
                Application.CutCopyMode = False 'kopyalama şeyini iptal et
                Sayfa2.Cells(satir + 1, 2).Value = okulno.Value  'okulno bilgisini yapıştırılan sayfadaki hücreye yaz
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell 'sayfa sonu kesmesi ekle
                
                'kopyalama işleminden sonra grafiğin veri kaynağını güncellemek gerekiyor
                verialani = "A" + CStr(satir + 5) + ":B" + CStr(satir + 14)
                ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Activate
                ActiveChart.SetSourceData Source:=Range(verialani)
            End If
            Sayfa2.Range("b2").Select
        End If
  Next
  Application.ScreenUpdating = True 'yapılan işlemler görünsün
 
  DoEvents 'hesaplamaların yapılması bekleniyor
 
  dosyaadi = ThisWorkbook.Path + "\pdfler\ogrencinotlari.pdf"  'sayfa2'yi pdf olarak verilen isimle dışarı aktar
  Sayfa2.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          dosyaadi, Quality:=xlQualityStandard, _
          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
          
End Sub
 

Ekli dosyalar

  • pdfolustur.zip
    54.7 KB · Görüntüleme: 7
Geri
Üst