word belgesinde makro ile detaylı çıktı alma

Katılım
31 Temmuz 2013
Mesajlar
5
Excel Vers. ve Dili
excel 2003
günlük defalarca çıktı aldığım word belgeleri var. aldığım evraklar minimum 2 sayfa. benim şöyle bir makroya ihtiyacım var.
1. belge içindeki sayfa sayısını say.
2. eğer; belge 2 sayfa ise çift taraflı yazdırl.
3. eğer belge 2 sayfadan fazla ise;
son iki sayfa hariç baştaki sayfaları normal çıktı al.
son iki sayfayı çift taraflı yazdır.

ilginiz için şimdiden teşekkürler. genellikle dalıp 2 sayfayı çift taraflı baskı almayı unutuyorum. hem kağıt hem zaman israfı oluyor.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn sevketkavas
Konuyu araştırdım,
Sorunuzda önemli olan konu, önlü/arkalı yazdırılacak sayfalar için çalışma anında kod ile yazıcının duplex özelliğinin aktifleştirilmesi, bu biraz karışık, bende önlü/arkalı yazdırma özelliği olan yazıcı olmadığından sağlıklı bir sonuca ulaşamadım.
Ancak, pratik bulursanız, aşağıdaki kod, dosyadaki tek yönlü yazdırılacak sayfaları yazdırıyor. Daha sonra Önlü/arkalı yazdırılacak sayfaların hangileri olduğunu belirten uyarı veriyor ve yazdırma iletişim kutusunu manuel olarak ayarlamanız için açıyor.
Kod:
Sub a()
say = ThisDocument.ActiveWindow.ActivePane.Pages.Count
If say = 1 Then
Application.PrintOut
ElseIf say = 2 Then
MsgBox "1-2 sayfaları önlü arkalı yazdırmak için seçim yapınız"
Dialogs(wdDialogFilePrint).Show
ElseIf say > 2 Then
ilk = say - 2
 Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="1-" & ilk
 MsgBox say - 1 & "-" & say & " sayfaları önlü arkalı yazdırmak için seçim yapınız"
Dialogs(wdDialogFilePrint).Show
End If
End Sub
 
Son düzenleme:
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn sevketkavas
İşi biraz daha kolaylaştırdım. Siz Açılan Yazıcı İletişim Kutusunda sadece çift taraflı yazdır'ı seçin sayfa numaralarını kendi buluyor.
Kod:
Sub a()
say = ThisDocument.ActiveWindow.ActivePane.Pages.Count
If say = 1 Then
Application.PrintOut
ElseIf say = 2 Then
With Dialogs(wdDialogFilePrint)
         .Range = wdPrintRangeOfPages
         .Pages = "1-2"
         .Show
     End With
ElseIf say > 2 Then
ilk = say - 2
 Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="1-" & ilk
With Dialogs(wdDialogFilePrint)
.Range = wdPrintRangeOfPages
.Pages = say - 1 & "-" & say
.Show
     End With
End If
End Sub
 
Katılım
31 Temmuz 2013
Mesajlar
5
Excel Vers. ve Dili
excel 2003
sn ömerceri çok teşekkürler gerçekten sorunum halloldu. sadece sayfa saymada küçük bir problem çıktı onuda şu şekilde hallettim

sub a()
say = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
If say = 1 Then
Application.PrintOut
ElseIf say = 2 Then
With Dialogs(wdDialogFilePrint)
.Range = wdPrintRangeOfPages
.Pages = "1-2"
.Show
End With
ElseIf say > 2 Then
ilk = say - 2
Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="1-" & ilk
With Dialogs(wdDialogFilePrint)
.Range = wdPrintRangeOfPages
.Pages = say - 1 & "-" & say
.Show
End With
End If
End Sub
 
Katılım
31 Temmuz 2013
Mesajlar
5
Excel Vers. ve Dili
excel 2003
sanırım böyle ekleniyo
say = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
If say = 1 Then
Application.PrintOut
ElseIf say = 2 Then
With Dialogs(wdDialogFilePrint)
.Range = wdPrintRangeOfPages
.Pages = "1-2"
.Show
End With
ElseIf say > 2 Then
ilk = say - 2
Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="1-" & ilk
With Dialogs(wdDialogFilePrint)
.Range = wdPrintRangeOfPages
.Pages = say - 1 & "-" & say
.Show
End With
End If
End Sub
 
Üst