AccessTr.neT

Tam Versiyon: Accessde Vba Kodu İle Kapalı Excel Dosyasını Yazdırmak
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4 5 6 7 8
Aslında koddaki her yazdırma için exceli açtırıp kapatmaya gerek yok lakin donup kaldığı için böyle yaptım.Normalde bir kere Excel açılıp ilgili sayfalar ilgili yazıcıdan çıkarılır.Deneyin kod doğru çalışıyorsa onuda hallederiz.

En sona eski default printeri yapmayı unutmuşum.

Call yazan yerdeki end subun üst satırına 

SetDefaultPrinter " " boşluk yerine standat yazıcı adı ekleyin.
Ellerinize sağlık ilk fırsatta deneyeceğim
Visible önce true sonra false yapılmasının sebebi nedir
False yi tek tırnak ile pasif yapmıştım.
Çünkğ Excel hiç görünmesin diye lakin bundan dolayı pc donduğu için öyle bıraktım ve fazla deneyemedim zaman yetersizliğinden.
Bazen pc ye akıl sır ermiyor.
Korumalı excelde yazdırmada sıkıntı çıkıyor mu hani exceli açınca "Düzenlemeyi etkinleştir" diye mesaj çıkıyor
Kodları denedinizmi bilmiyorum.Fırsat bulmuşken kodları düzenledim.
Array ile yaptım ve her defasında excelin kapanıp açılmasına gerek kalmadı.

sayfalar = Array("Sayfa1", "Sayfa2") 'Buraya sayfa adlari gelecek
printerler = Array("Brother DCP-195C", "OneNote") 'Buraya printer adlari gelecek

Yukarıdakilr paralel olacak.Ben denedim hatasız çalıştı.


Kod:
Option Compare Database

Const dosyaYol As String = "C:\Users\Zafer\Desktop\xxx.xlsx" 'Buraya Excelin dosya yolu zazilacak
Dim xlapp As Excel.Application


Private Sub Befehl0_Click()
   
    Dim sayfalar
    Dim printerler
    Dim say As Integer

    Set xlapp = CreateObject("Excel.Application")
   
    sayfalar = Array("Sayfa1", "Sayfa2") 'Buraya sayfa adlari gelecek
    printerler = Array("Brother DCP-195C", "OneNote") 'Buraya printer adlari gelecek
   
    xlapp.Visible = True
   
    xlapp.Workbooks.Open dosyaYol, True, False
   
    For say = LBound(sayfalar) To UBound(sayfalar)
        Call printYap(printerler(say), sayfalar(say))
    Next
 
    xlapp.Workbooks.Close
    xlapp.Quit
    Set xlapp = Nothing
    SetDefaultPrinter "Brother DCP-195C" 'En sonda hangi printer default olacaksa onun adi olacak
    Erase sayfalar: Erase printerler: say = Empty
   
End Sub


Kod:
Function printYap(ByVal PrintAd As String, ByVal sayfaAd As String)
    xlapp.Sheets(sayfaAd).Select
    SetDefaultPrinter PrintAd
    xlapp.Sheets(sayfaAd).PrintOut
End Function
Sayfalar: 1 2 3 4 5 6 7 8