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