• DİKKAT

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

macro ile otomatik yazıcı seçimi

Katılım
1 Mart 2009
Mesajlar
113
Excel Vers. ve Dili
xp
Merhaba,

Bir sayfaya geldiğimde yazdır diyince otomatik olarak doğru (istediğim) yazıcının seçili olmasını istiyorum.
Yardımcı olursanız sevinirim.
 
Kod:
Application.Dialogs(xlDialogPrinterSetup).Show

bu sekilde mi yoksa saniyorum bu sekilde ayarlayabilirsiniz..

Kod:
Dim prt As Printer
For Each prt In Printers
  If prt.DeviceName = "[COLOR="Red"]printer adi[/COLOR]" Then
    Set Printer = prt
    Exit For
  End If
Next
 
Merhaba,

Ek olarak Yazıcı Seçimini aşağıdaki gibi de yapabilirsiniz :

Kod:
Sub a()
Dim Yazıcı As String
Yazıcı = Application.Dialogs(xlDialogPrinterSetup).Show
If Yazıcı = False Then Exit Sub
End Sub
 
Evet ilk verdigin kodun sub altina alinmis hali, tesekkurler Necdet Bey..
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ScrollArea = "A1:I24"
End Sub

Private Sub Worksheet_Deactivate()
ScrollArea = "A1:I24"
End Sub

bu kodun altına itina ile

Dim prt As Printer
For Each prt In Printers
If prt.DeviceName = "Panasonic KX-P1150" Then
Set Printer = prt
Exit For
End If
Next
yazdım .
Yazdır dediğimde printer seçilmemişti.
Bir müddet sonra da kodda hata buldu.
Biyerde hata yaptım ama nerde
 
evet vba 6 icin o kod, necdet beyin verdigi sekilde denerseniz calisacaktir..
 
O kod hangi printerdan print almak istiyorsaniz onu secmenize yarar ayrica print komutu vermelisiniz, bu arada az once problem yapan kod sanirim vpnprint acmistir onlari task managerdan temizlemenizi tavsiye ederim..
 
Açıkçası ufak bir dosamız var onda cari hesap tutuyoruz.
Birde fatura sayfası var.Bu sayfada nokta vuruşlu yazıcıyı seçmek hep unutuluyor sonuçta zaman ve emek kaybı oluyor.
Ben o sayfada her zaman otomatik olarak Panasonic kx p1150 seçilmiş olabilir mi diye merak etmiştim.
Sanırım o şekilde olmuyor.
İlginize teşekkürler.
 
Kod:
Sub PrintToAnotherPrinter()
Dim STDprinter As String
    STDprinter = Application.ActivePrinter
    Application.ActivePrinter = "[COLOR="Red"]hp laserjet 1022 on ne02:[/COLOR]"
    ' change printer
    ActiveSheet.PrintOut
    ' prints the active sheet
    Application.ActivePrinter = STDprinter
    ' change back to standard printer
End Sub

simdi ben kendi printerimi yazdim kirmizi olan bolume fakat siz kendi printer`inizi yazicaksiniz, oncelikle kodu oldugu gibi yapistirin daha sonra ctrl+p yapip istediginiz nokta vuruslu printeri secip print etmeden cikin.. daha sonra

Kod:
    STDprinter = Application.ActivePrinter
kodunda Application.ActivePrinter`in uzerine mouse`unuzu getirdiginizde kirmizi yazili bolume yazacaginiz printer adinizi gorursunuz, kolay gelsin..
 
Malesef bende bir türlü olmadı.
Nerde hata yaptım anlamıyorum.
Yazıcı adını yazdır daki görünen adıyla yazdım.
Ne o kodun üzerine gelince görünüyor nede otomatik o yazıcıyı seçiyor.

http://www.sendspace.com/file/pjz69l
Dosya burda bir yapabilen olursa çok sevinirim.

Fatura irsaliyeli ve fatura irsaliyesiz butonlarına basınca çıkan sayfalarda kullanmak istiyorum bu kodu.
 
Sadece printer adinizi yazicaksiniz, Application.ActivePrinter kodunun uzerinde vba kod duzenleyicisinde geldiginizde gorunur.. hp laserjet 1022 on ne02:yerine kendinizinkini yazin yeter..
 
Mustafa Bey defalarca denedim malesef omuyor .Çıldırıcam.
Yabancı sitelerden de araştırdım oralarda da aynı kod.
Excel versiyonum 2002 sp2 acaba ondan mı sıkıntı oluyor.

Not:Sorumu yanlış ve eksik sorduğumu düşündüğümden başka başlık altında tekrar açtım
 
o basliginizi tam yapmaniz gerekeni yazdim, bu sefer oldurucaginizi saniyorum, cunku deneyerek yapiyorum ve sp ile alakasi yok bunun..
 
Sayın Hocalarım
Pc ye bağlı 3 yazıcı var birincisi lazer yazıcı "xerox phaser 3117 ", ikincisi etiket yazıcısı "Z LP 2844", üçüncüsü ise ağ üzerinde nokta vuruşlu "OKI 3321"
Yazdıracağım sayfadaki bilgilerle, peşpeşe önce birinci yazıcıdan fiş çıkacak, ikinci yazıcıda etiket yazacak, üçüncü yazıcıda form yazacak.
Sayın Mustafaine'nin verdiği koda ;Yazıcı ismini doğru yazmama rağmen; ( kod çalışınca STDprinter üzerine mause ile gelince sarı yazıda " LPT1: üzerinde Z LP 2864" Yazıyor)
Application.ActivePrinter = "Z LP 2864 on LPT1" satırında hata veriyor ve aşağıdaki hata mesajını veriyor

run-time error "1004":
Method 'Activeprinter' of object '_Application" failed
Nedenini bilen arkadaşlar yardım edebilirler mi? Hepinize kolay Gelsin
 
Application.ActivePrinter = "Z LP 2864 on LPT1" Bu satir hata verdiginde debug deyip mouse ile
STDprinter = Application.ActivePrinter satirinda ActivePrinter`in uzerine gelip tirnak icinde ne yaziyorsa tamamen hata veren satirin tirnak icerisine yazdiniz mi?

eger yazdiysaniz
Kod:
Application.ActivePrinter = "Z LP 2864 on ne01:"
Application.ActivePrinter = "Z LP 2864 on ne02:"
Application.ActivePrinter = "Z LP 2864 on ne03:"
gibi arttirarak deneyiniz..
 
Sayın arkadaşlar
Application.ActivePrinter = "Z LP 2864 on LPT1"
kod satırını
Application.ActivePrinter = "LPT1: üzerindeki Z LP 2864 "
şeklinde yazınca hata vermedi. Türkçe yada ingilizce versiyondan kaynaklanıyor her halde
Yalnız arkadaşlar dikkat 2864 ten sonra mutlaka bir boşluk verin ve tırnağı öyle kapatın o boşluğu vermeyince aynı hatayı veriyor.

saygılar
 
kaç günlerdir tüm sitelerde(yerli ve yabancı) aradığım ve kafaya takıp diğer işlerimi yapamadığım bu yazıcı seçimi işinin de çözümünü bu sitede buldum.

Ne diyeyim Allah Razı olsun, çok teşekkürler...
 
Yeni yazıcıların farklı kağıt besleme üniteleri var. Örneğin 1. de A4, 2. de A3 ve El ile besleme ünitesinde de A6 kağıt olsun. Excel'den yazdırıyoruz, farklı sayfalardan komut gönderirken bu belirlenemez mi?
Araya girdim belki ama, konu yazıcı olunca dikkatimi çekti. Genelde network yazıcılarında kullanılabilecek yöntem.
İlgilenenlere şimdiden teşekkür ederim.
Saygılarımla
 
Geri
Üst