• DİKKAT

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

Otomatik pdf e yazdirma.

Katılım
17 Mart 2009
Mesajlar
102
Excel Vers. ve Dili
2013 english.
Merhaba Arkadaslar,

Bir excel calismasina makro yazmaya calistim. ve bu makroyu PRINT butonuna iliskiledim. Yalnız problem su;

MCF sayfasinda K1 hucresi benim referansim. ornegin K1 hucresi 1 ise RAW sayfasindaki 1 e denk gelen bilgileri MCF rapor sayfasina getiriyor ve print aliyor. K1 hucresi 2 ise, 2 sayisina denk gelen bilgileri gosteriyor ve bu defada bu bilgilere gore print yapıyor. hersey buraya kadar cok guzel. PRINT makrosuna bakarsaniz. benim istedigim 1 den 8 e kadar olanlari rapora ayri ayri isleyip cikti almak. normal printerlarda sorunum yok cok guzel aliyorum. ama PDF e gelince her sayfa icin save as yapıyor. ve yeni bir ad vermek zorunda kaliyorum.

Arzu ediyorum ki 1 den 8 e kadar PDF printi yapmak istedigimde ya tum rapor sayfalarini birlestiren bir tek pdf dosyasi olsun. yada otomatik adlandirarak pdf yapsın.

ekte dosyam var. lutfen bu konuda yardiminizi esirgemeyin.

cok tesekkurler

Yeliz.
 

Ekli dosyalar

Lutfen bu konuda yardimci olacak bir arkadas yok mu

Lutfen bu konuda yardimci olacak bir arkadas yok mu


Merhaba Arkadaslar,

Bir excel calismasina makro yazmaya calistim. ve bu makroyu PRINT butonuna iliskiledim. Yalnız problem su;

MCF sayfasinda K1 hucresi benim referansim. ornegin K1 hucresi 1 ise RAW sayfasindaki 1 e denk gelen bilgileri MCF rapor sayfasina getiriyor ve print aliyor. K1 hucresi 2 ise, 2 sayisina denk gelen bilgileri gosteriyor ve bu defada bu bilgilere gore print yapıyor. hersey buraya kadar cok guzel. PRINT makrosuna bakarsaniz. benim istedigim 1 den 8 e kadar olanlari rapora ayri ayri isleyip cikti almak. normal printerlarda sorunum yok cok guzel aliyorum. ama PDF e gelince her sayfa icin save as yapıyor. ve yeni bir ad vermek zorunda kaliyorum.

Arzu ediyorum ki 1 den 8 e kadar PDF printi yapmak istedigimde ya tum rapor sayfalarini birlestiren bir tek pdf dosyasi olsun. yada otomatik adlandirarak pdf yapsın.

ekte dosyam var. lutfen bu konuda yardiminizi esirgemeyin.

cok tesekkurler

Yeliz.
 
bu haliyle tam değil. sayfa yapısının ayarlanması için çalışılması lazım.

Kod:
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(Row, Column)


ama başlangıç, başlangıçtır.

Kod:
Sub BatchPrint(i As Integer, j As Integer)
    
    Dim ws As Worksheet, wsTemp As Worksheet
    Dim k As Integer, rws As Integer, tPage As Integer
    Dim fName As String

    i = 1: j = 5
    If (i = 0 Or j = 0) Or (i > j) Then MsgBox "Please check entry "
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
 
    fName = ThisWorkbook.Path & "\" & "Print.Pdf"
    Set ws = Sheets("MCF")
    Set rng = ws.Range("A1:J38")
    Set wsTemp = Sheets.Add

    rws = 1
    For k = i To j
        With ws
            .Range("K1") = k
            .Calculate
            .Range("A1:J38").Copy
        End With
        With wsTemp.Cells(rws, 1)
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
            .PasteSpecial Paste:=xlPasteColumnWidths
            rws = rws + 40
        End With
    Next
    Application.CutCopyMode = False
    tPage = (j - i + 1)
    
    With wsTemp.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = tPage
        .PaperSize = xlPaperA4
    End With
 
    wsTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, Quality:=xlQualityStandard, _
           IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    wsTemp.Delete
 
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
    
End Sub
 
Mancubus arkadasim.

kimsenin ilgilenecegi konusunda artik umidimi kesmisken sen yardim ettin. sana cok ama cok tesekkur ediyorum. altta kodu direkt girdigimde oldu. tabii ki de senin de dedigin gibi sayfa duzeni gerekli onu halledebilirim sanirim. yalniz bu kodu nereye koymam lazim. onu anlamadim.

ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(Row, Column)

simdiden cok tesekkur ediyorum.

Yeliz.
 
rica ederim.

onu bir yer eklemiyoruz. belli satırlara "page break" eklemeye yarayan kod. üzerinde çalışılması için vermiştim. ama şart değil.

sütun genişlikleri çok fazla olduğu için 1 sayfa genişliğe sığdırma (.FitToPagesWide) yaptık. baskı ön izlemeden manuel de yapıyoruz kimi zaman.

bununla page break çelişti. zamanım olmadığı için bakamadım.



yatay olarak 1 sayfaya sığacak şekilde yapılandırdıktan sonra, deneme yanılma ile sayfaya kaç kaç satırın sığdığı belirlenerek ve belki MCF şablonunda gereksiz boş satırları silerek vb ayarlama yapılabilir.

bu takdirde, rws = rws + 40 satırını, örneğin, rws = rws + 36 diyerek herhangi bir ilave ayara gerek kalmadan da yapmak mümkün.

yeni eklenen sayfanın kenar boşluklarını da aşağıdaki gibi ayarlamak mümkün.

Kod:
With Worksheets(1).PageSetup
    .LeftMargin = Application.InchesToPoints(0.5)
    .RightMargin = Application.InchesToPoints(0.75)
    .TopMargin = Application.InchesToPoints(1.5)
    .BottomMargin = Application.InchesToPoints(1)
    .HeaderMargin = Application.InchesToPoints(0.5)
    .FooterMargin = Application.InchesToPoints(0.5)
End With
makro kaydederek te ideal rakamları almak mümkün.

wsTemp.Delete diye bir satır var aşağılarda. kopyalama işlemi için aracı olarak kullanıyor kod. bunun başına ' koyarak çalışmasını engelleyip geçici sayfayı muhafaza etmek ve bunun üzerinde çalışmak mümkün.
 
Mancubus,

kafam iyice karisti gercekten. RAW sayfasinda 8 maddelik olarak dosyayi attach etmistim. inanir misin bu satir sayisi normalde 100,000. iste sirf bu nedenle otomatik olarak pdf olayina girmek zorunda kaldim. ama beceremedim sayfa duzenini. olmadi kafam almadi. Nasil yapsak?

Slm

Yeliz.
 
100 bin satır = 100 bin form = 100 bin sayfalık pdf

mi demek istiyorsun?
 
Geri
Üst