• DİKKAT

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

Yazıcı Seçimi

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
Excel Vers. ve Dili
2010-2016
Kolay gelsin.
Excelden yazıcı seçimi ile ilgili aşağıdaki kodları kullanıyorum. Ama bazı durumlarda sorun oluyor. Aktif yazıcıyı bir yere not etse, tanımlı tüm yazıcılar içerisinde örneğin ZARF yazılı olan yazıcıyı bulup yazdırma işlemi bittiktek sonra aktif yazıcısına dönse. Bu şekilde bir işlem mümkün müdür.
Kullandığım kodlar.
Kod:
Sub YAZICI_SEC()
Dim STDprinter As String
    STDprinter = Application.ActivePrinter
    Application.ActivePrinter = "Ne00: üzerindeki ZARF " 'Yeni bir yazıcı tanımlanırsa ya da port eklenirse Ne00 numarası değişebiliyor ve bu da sorun çıkartıyor.
    ActiveSheet.PrintOut
    Application.ActivePrinter = STDprinter
End Sub
 
Aşağıdaki kodları yazıp kendi excelimde denedim. Selamlar.. Başarılar...

Sub YAZICI_SEC()
Dim STDprinter As String
STDprinter = Application.ActivePrinter
On Error GoTo hata1
Application.ActivePrinter = "Ne00: üzerindeki ZARF " ' On Error GoTo hata1 kodu olası zararlar karşısında önceki pozisyonu korumak için eklenmiştir...

ActiveSheet.PrintOut
Application.ActivePrinter = STDprinter
Exit Sub

hata1:
Application.ActivePrinter = STDprinter
MsgBox "Yazdırma ile ilgili Bir Hata Oluştu."
End Sub
 
Son düzenleme:
Sayın kulomer46 ilginiz için teşekkür ederim. Bilgisayarda normalde tonerli bir yazıcı bir de nokta vuruşlu yazıcı mevcut. Tonerli yazıcı varsayılan seçili. Sizin dediğiniz gibi yaparsam hata durumunda zarfı nokta vuruşlu yerine tonerliden çıkartır.
Benim istediğim yazıcılar içerisinde isminde ZARF geçen yazıcıyı otomatik seçsin istiyorum.
 
@askm, aşağıdaki kodda bahsettiğiniz "Zarf" isimli yazıcının kullandığı Port numarası bulunarak, tanımlanmaktadır. Dolayısıyla, yazıcı ekleme/çıkarma durumunda sıkıntı yaşanmayacaktır. Bilgisayarıma bağlı fiziki bir yazıcı olmadığı için, kodu deneme şansım olmadı...

Kod:
'Haluk - 27/12/2018
'
Sub YAZICI_SEC()
    Dim STDprinter As String, other_Printer As String
 
    STDprinter = Application.ActivePrinter
    other_Printer = "ZARF"
    port_Zarf = GetPrinterPort(other_Printer)
    Application.ActivePrinter = port_Zarf & " üzerindeki " & other_Printer & " "
    ActiveSheet.PrintOut
    Application.ActivePrinter = STDprinter
End Sub
'
Function GetPrinterPort(strPrinterName As String) As String
    Dim objReg As Object, strRegVal As String, strValue As String
    Const HKEY_CURRENT_USER = &H80000001
 
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    strRegVal = "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\"
    objReg.getstringvalue HKEY_CURRENT_USER, strRegVal, strPrinterName, strValue
    GetPrinterPort = Split(strValue, ",")(1)
End Function

.
 
Son düzenleme:
Haluk Bey ilginiz için çok teşekkürler. Yarın deneyip sonucu bildireceğim. Allah razı olsun.
 
Haluk Bey kodlar sorunsuz çalışıyor. Teşekkürler.
 
Kolay gelsin ...

.
 
Haluk Bey hayırlı akşamlar. Konuyu yeniden açmak olacak ama bugün bir sıkıntı ile karşılaştım. Bilgisayarın kendinde kablo ile kurulu olan yazıcılarda sorun yok. Yukardaki kodlar süper çalışıyor. Ama ağ üzerinden bağlandığında (Örneğin Ali bilgisayarı üzerinde yazıcı1 e bağlandığımda) sanırım regeditte ilgili yere kayıt yapmıyor. strValue değeri boş geliyor. Bunun için bir çözüm var mıdır?
 
Merhaba;

Tabii şu anda bende ağ olmadığı için sadece tahminde bulunacağım.

Sizin ağdaki söz konusu yazıcı için şunun gibi bir şey denemelisiniz diye düşünüyorum....


Kod:
other_Printer = "\\Ali\Yazici1"

.
 
Sabah deneyeceğim Haluk Bey. Çok teşekkür ederim.
 
Regeditte ağdan bağlanan yazıcılar pclocal yazıcınin olduğu yerde değil. Printers in altında değil de provides altına kaydolur. O kısmı okutmak gerekli sanırım. Orada port no var mı bakamadım.
 
Cepten yazdığım için bazı ifadeler karışık oldu kusura bakmayın.
 
Geri
Üst