• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

listeden birden fazla PDF oluşturma

Katılım
27 Mart 2012
Mesajlar
113
Excel Vers. ve Dili
2010 Almanca
Merhaba arkadaşlar,
ekteki dosyada yer alan listeden PDF'ler oluşturmak istiyorum.

Makinelere yetkililer tarafından bakım yapılmakta.

Örn.
Makine 1 in toplamda 6 bakım yapılmıştır ve dolayısıyla 6 PDF oluşturulmalıdır.
3 aylık bakımı yapıldıysa

Formda hangi tarihte yapıldığı kimin tarafından yapıldığı yazmalıdır.
Örnek pdf çıktılarını Excel dosyasında görebilirsiniz.

Tek tuş ile tüm listenin PDFleri ayrı ayrı oluşturulmalıdır. Bu örnek için 196 PDF

Desteğiniz için şimdiden teşekkür ederim.
 

Ekli dosyalar

Makine1 i siz mi seçip getirteceksiniz, yoksa sırası ile tümünü pdf mi yapacak. Seçim işlemi için açılır kutu eklerseniz daha net çözüm alırsınız. Ya da aktif satırı pdf yap işlemi kullanabilirsiniz. Sayfa1 e bir buton eklenir. Hangi satırda iseniz o satır için pdf yapar. Ve bunun için sadece 1 tane pdf yap sayfası yeterli.
 
Örnek dosyanızdaki örnek pdf çıktı sayfasının yazdırma bölümünü ayarlayın ve kodu örnek pdf çıktı sayfasında çalıştırın.

kod:

Kod:
Sub pdf_yap()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
sayfa = "Sayfa1" 'ActiveSheet.Name

tablo = "örnek pdf çıktı"

For i = 2 To ThisWorkbook.Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = ThisWorkbook.Worksheets(sayfa).Cells(i, 1).Value
yetkili = ThisWorkbook.Worksheets(sayfa).Cells(i, 2).Value

say1 = 0
say2 = 0

For j = 3 To ThisWorkbook.Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column
ThisWorkbook.Worksheets(tablo).Cells(3, "k").Value = yetkili
ThisWorkbook.Worksheets(tablo).Cells(4, "k").Value = makina
ThisWorkbook.Worksheets(tablo).Cells(5, "k").Value = ThisWorkbook.Worksheets(sayfa).Cells(i, j).Value
aylik = ThisWorkbook.Worksheets(sayfa).Cells(1, j).Value
ThisWorkbook.Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."

say1 = say1 + 1
If say1 = 1 Then
ThisWorkbook.Sheets(tablo).Copy
Else
ThisWorkbook.Sheets(tablo).Copy After:=ActiveWorkbook.Sheets(1)
say = ActiveWorkbook.Sheets.Count
Sheets(ActiveSheet.Name).Move After:=Sheets(say)
End If

Next j

If say1 > 0 Then
ActiveWorkbook.Worksheets.Select
'Application.DisplayAlerts = False
yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1

ActiveWorkbook.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\pdf dosyası " & say2 & " " & makina & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

ActiveWorkbook.Close False
End If

Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub
 

Ekli dosyalar

Örnek dosyanızdaki örnek pdf çıktı sayfasının yazdırma bölümünü ayarlayın ve kodu örnek pdf çıktı sayfasında çalıştırın.

kod:

Kod:
Sub pdf_yap()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
sayfa = "Sayfa1" 'ActiveSheet.Name

tablo = "örnek pdf çıktı"

For i = 2 To ThisWorkbook.Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = ThisWorkbook.Worksheets(sayfa).Cells(i, 1).Value
yetkili = ThisWorkbook.Worksheets(sayfa).Cells(i, 2).Value

say1 = 0
say2 = 0

For j = 3 To ThisWorkbook.Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column
ThisWorkbook.Worksheets(tablo).Cells(3, "k").Value = yetkili
ThisWorkbook.Worksheets(tablo).Cells(4, "k").Value = makina
ThisWorkbook.Worksheets(tablo).Cells(5, "k").Value = ThisWorkbook.Worksheets(sayfa).Cells(i, j).Value
aylik = ThisWorkbook.Worksheets(sayfa).Cells(1, j).Value
ThisWorkbook.Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."

say1 = say1 + 1
If say1 = 1 Then
ThisWorkbook.Sheets(tablo).Copy
Else
ThisWorkbook.Sheets(tablo).Copy After:=ActiveWorkbook.Sheets(1)
say = ActiveWorkbook.Sheets.Count
Sheets(ActiveSheet.Name).Move After:=Sheets(say)
End If

Next j

If say1 > 0 Then
ActiveWorkbook.Worksheets.Select
'Application.DisplayAlerts = False
yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1

ActiveWorkbook.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\pdf dosyası " & say2 & " " & makina & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

ActiveWorkbook.Close False
End If

Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub

zaman ayırıp cevap verdiğiniz için teşekkür ederim.
1 makine için 1 PDF oluşturma fikride güzel. peki ayrı ayrı pdf için ne gibi bir değişiklik gerekiyor?

İyi bayramlar...
 
Son düzenleme:
kod:

Kod:
Sub pdf_yap2()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
sayfa = "Sayfa1" 'ActiveSheet.Name

tablo = "örnek pdf çıktı"

For i = 2 To Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = Worksheets(sayfa).Cells(i, 1).Value
yetkili = Worksheets(sayfa).Cells(i, 2).Value

say1 = 0
say2 = 0

For j = 3 To Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column

If Worksheets(sayfa).Cells(i, j).Value <> "" Then
Worksheets(tablo).Cells(3, "k").Value = yetkili
Worksheets(tablo).Cells(4, "k").Value = makina
Worksheets(tablo).Cells(5, "k").Value = Worksheets(sayfa).Cells(i, j).Value
aylik = Worksheets(sayfa).Cells(1, j).Value
Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."

[COLOR="Red"]If j = 6 Or j = 10 Then
Worksheets(tablo).Cells(12, "b").Value = "Motor Yağı değişimi yapıldı"
[COLOR="Blue"]Else
Worksheets(tablo).Cells(12, "b").Value = ""[/COLOR]
End If[/COLOR]

yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1
Sheets(tablo).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\ " & say2 & " " & makina & " " & aylik & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next j

Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub
 
kod:

Kod:
Sub pdf_yap2()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
sayfa = "Sayfa1" 'ActiveSheet.Name

tablo = "örnek pdf çıktı"

For i = 2 To Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = Worksheets(sayfa).Cells(i, 1).Value
yetkili = Worksheets(sayfa).Cells(i, 2).Value

say1 = 0
say2 = 0

For j = 3 To Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column

If Worksheets(sayfa).Cells(i, j).Value <> "" Then
Worksheets(tablo).Cells(3, "k").Value = yetkili
Worksheets(tablo).Cells(4, "k").Value = makina
Worksheets(tablo).Cells(5, "k").Value = Worksheets(sayfa).Cells(i, j).Value
aylik = Worksheets(sayfa).Cells(1, j).Value
Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."

yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1
Sheets(tablo).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\ " & say2 & " " & makina & " " & aylik & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Next j

Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub


Halit bey teşekkür ederim.
bir sorum daha olacak pdfe yazdırdığımız makine ismini artırarak yazdırmasak da pdf çıktı sayfasında ki "K4" de yer alan makine numarasını nasıl yazdırabiliriz?

Kod:
Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."
 
"Makine" & i - 1 yerine Makine yazınca oldu =) birşeyler öğreniyorum sanırım :)
 
Sorunu çözmüşsünüz k4 hücresindeki isime göre yazınca örnek Makina29 da tam 7 tane tarih var buna göre 7 dosyanın adı da aynı olacak böyle işlem olmaz
 
Halit bey tekrar merhaba,

12 aylık ve 24 aylık bakımlarda "Motor Yağı değişimi yapıldı" ibaresini eklemek istesem ne yapmam gerekiyor?
 
Halit bey tekrar merhaba,

12 aylık ve 24 aylık bakımlarda "Motor Yağı değişimi yapıldı" ibaresini eklemek istesem ne yapmam gerekiyor?

yazdırma alanının dışına makro ile aylık bakımı ekledim ve çıktıya bir eğer formülü yazarak çözdüm.

daha pratik çözüm öneriniz varsa bana birşey daha öğretmiş olursunuz :)
 
6 nolu mesaja kırmızı bölümü ekledim
 
Halit bey tekrar teşekkür ederim.
bu şekilde hepsine yazıyor dikkate almıyor
 
Bir ekleme daha yaptım hücreyi boşaltıyor.
 
Halit bey merhaba,
aklıma birşey daha takıldı.
Tüm sayfaları tek pdf olarak oluşturmak için nasıl bir değişiklik gerekiyor.
 
İhtiyaçmı oldu öğrenmek için mi soruyorsunuz.
 
cevabıma göre cevabını değişecek mi bilmiyorum ama öğrenmek için soruyorum.
ilk dosyada her satır için 1 pdf di ama onu tek pdf e nasıl çevireceğimi çözemedim.


Merhaba niçin böyle yazdığımı açıklayım kod yazmak zaman ve çok meşşakkatli bir durum ilk sorunuzu sorduğunuzda cevapladım bir kaç sorunuzu da cevapladım.

Gelellim şimdiki sorunuza bütün değerlerle bir pdf dosyası oluşturmak için kod da küçük bir değişiklik yapmak gerekiyor değişikliği yaptım kırmızı yerleri bir veya bir kaç satır üste alarak hallettim ama bu kod nasıl kullanılacak bir çok veri mevcut bu haliyle bu yöntemle bu kod kullanılmayacak kadar yavaş çalışır isterseniz bir deneyiniz tam 196 sayfa birleştiriliyor.

Eğer verilerle farklı bir sayfaya alt alta aktarım olsaydı o zaman biraz daha hızlı olurdu.


Kod:
Sub pdf_yap()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
sayfa = "Sayfa1" 'ActiveSheet.Name

tablo = "örnek pdf çıktı"
[COLOR="Red"]say1 = 0
say2 = 0[/COLOR]

For i = 2 To ThisWorkbook.Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = ThisWorkbook.Worksheets(sayfa).Cells(i, 1).Value
yetkili = ThisWorkbook.Worksheets(sayfa).Cells(i, 2).Value


For j = 3 To ThisWorkbook.Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column

If ThisWorkbook.Worksheets(sayfa).Cells(i, j).Value <> "" Then
ThisWorkbook.Worksheets(tablo).Cells(3, "k").Value = yetkili
ThisWorkbook.Worksheets(tablo).Cells(4, "k").Value = makina
ThisWorkbook.Worksheets(tablo).Cells(5, "k").Value = ThisWorkbook.Worksheets(sayfa).Cells(i, j).Value
aylik = ThisWorkbook.Worksheets(sayfa).Cells(1, j).Value
ThisWorkbook.Worksheets(tablo).Cells(11, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."

say1 = say1 + 1
If say1 = 1 Then
ThisWorkbook.Sheets(tablo).Copy
Else
ThisWorkbook.Sheets(tablo).Copy After:=ActiveWorkbook.Sheets(1)
say = ActiveWorkbook.Sheets.Count
Sheets(ActiveSheet.Name).Move After:=Sheets(say)
End If
End If
Next j
[COLOR="Red"]Next i[/COLOR]
If say1 > 0 Then
ActiveWorkbook.Worksheets.Select
'Application.DisplayAlerts = False
yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1
ActiveWorkbook.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\pdf dosyası " & say2 & " " & makina & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ActiveWorkbook.Close False
End If

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub
 
Bu kod farklı daha hızlı yapmanız gereken dosyaya data adı altında yeni bir sayfa ekleyin kağıdı yatay yapın ve o sayfada kodu çalıştırın.

Kod:
Sub pdf_yap3()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Columns("A:K").ClearContents

sayfa = "Sayfa1" 'ActiveSheet.Name
tablo = "data"

ekle = 0
For i = 2 To Worksheets(sayfa).Cells(Rows.Count, 1).End(xlUp).Row
makina = Worksheets(sayfa).Cells(i, 1).Value
Yetkili = Worksheets(sayfa).Cells(i, 2).Value
For j = 3 To Worksheets(sayfa).Cells(i, Columns.Count).End(xlToLeft).Column
If Worksheets(sayfa).Cells(i, j).Value <> "" Then
Worksheets(tablo).Cells(3 + ekle, "k").Value = Yetkili
Worksheets(tablo).Cells(4 + ekle, "k").Value = makina
Worksheets(tablo).Cells(5 + ekle, "k").Value = Worksheets(sayfa).Cells(i, j).Value

Worksheets(tablo).Cells(3 + ekle, "J").Value = "Yetkili:"
Worksheets(tablo).Cells(4 + ekle, "J").Value = "Makine:"
Worksheets(tablo).Cells(5 + ekle, "J").Value = "Tarih:"

aylik = Worksheets(sayfa).Cells(1, j).Value
Worksheets(tablo).Cells(11 + ekle, "b").Value = "Makine" & i - 1 & " in " & aylik & " bakımı yapılmıştır."
End If
ekle = ekle + 31
Next j

Next i
'Application.DisplayAlerts = False
yol = ThisWorkbook.Path
say2 = CreateObject("Scripting.FileSystemObject").getfolder(yol).Files.Count + 1
Worksheets(tablo).ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & "\pdf dosyası " & say2 & " " & makina & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "işlem tamam"
End Sub
 
Geri
Üst