Yazıcı Seçimi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
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
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,513
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
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:

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
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.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
@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:

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Haluk Bey ilginiz için çok teşekkürler. Yarın deneyip sonucu bildireceğim. Allah razı olsun.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Haluk Bey kodlar sorunsuz çalışıyor. Teşekkürler.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kolay gelsin ...

.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
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?
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,387
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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"
.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Sabah deneyeceğim Haluk Bey. Çok teşekkür ederim.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
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.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Cepten yazdığım için bazı ifadeler karışık oldu kusura bakmayın.
 
Üst