active directory içerisindeki yazıcıya script ile bağlanma

Katılım
25 Eylül 2011
Mesajlar
119
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Merhaba arkadaşlar;
Bu konu exceli ilgilendirir mi nereye açılır bilemedim internette konuda bulamadım en azından fikriniz benim için önemli yapmak istediğim active directory içerisinde yazıcılarım var kullanıcılar burayı açıp buradan yazıcı seçebiliyor ancak burayı açması listeden yazıcıyı bulması gibi zorluklar nedeniyle excel içerisinde butonlar yapıp 101 nolu oda tıkladığında o odadaki yazıcıyı printers klasörüne atsın istiyorum yazdırırken yazıcıyı seçip yazdırabilir. Yada script ile vbs oluşturup çalıştırabilir ama birden fazla yazıcı olacak script kodu içinde mesela 101nolu oda 102 nolu oda 103 nolu oda gibi böyle birşey nasıl oluşturabilirim.
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
755
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Merhaba arkadaşlar;
Bu konu exceli ilgilendirir mi nereye açılır bilemedim internette konuda bulamadım en azından fikriniz benim için önemli yapmak istediğim active directory içerisinde yazıcılarım var kullanıcılar burayı açıp buradan yazıcı seçebiliyor ancak burayı açması listeden yazıcıyı bulması gibi zorluklar nedeniyle excel içerisinde butonlar yapıp 101 nolu oda tıkladığında o odadaki yazıcıyı printers klasörüne atsın istiyorum yazdırırken yazıcıyı seçip yazdırabilir. Yada script ile vbs oluşturup çalıştırabilir ama birden fazla yazıcı olacak script kodu içinde mesela 101nolu oda 102 nolu oda 103 nolu oda gibi böyle birşey nasıl oluşturabilirim.
Yapay Zeka CEvabı
1️⃣ Excel’de Buton ile Yazıcı Seçtirme
Her odanın yazıcısını biliyorsan (AD’de kayıtlı ismiyle), şu mantığı uygulayabilirsin:

Sub YaziciSec_101()
Call YaziciDegistir("\\SunucuAdı\Yazici101")
End Sub

Sub YaziciSec_102()
Call YaziciDegistir("\\SunucuAdı\Yazici102")
End Sub

Sub YaziciDegistir(ByVal YaziciAdi As String)
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")

' Varsayılan yazıcıyı değiştir
objShell.Run "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n """ & YaziciAdi & """", 0, True

MsgBox "Varsayılan yazıcı değiştirildi: " & YaziciAdi, vbInformation
End Sub

🔹 Burada \\SunucuAdı\Yazici101 kısmına AD’de görünen tam yazıcı adını yazmalısın.

🔹 Excel’de 101, 102, 103 için ayrı butonlar koyup bu alt prosedürlere bağlayabilirsin.


2️⃣ VBS Script ile Yapma

Eğer Excel değil, dışarıda script çalıştırmak istersen, şöyle bir .vbs dosyası da hazırlayabilirsin:

Set objShell = CreateObject("WScript.Shell")

' 101 Nolu Oda Yazıcısı
objShell.Run "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""\\SunucuAdı\Yazici101"""

Aynı dosyadan çoğaltıp isimlerini değiştirebilirsin (Yazici102, Yazici103 vs.).


3️⃣ Excel İçinde Seçmeli ComboBox

Buton yerine tek bir ComboBox koyabilirsin. Kullanıcı listeden “101 Nolu Oda”yı seçer, o seçime göre yazıcı atanır:

Sub YaziciSecimindenAta()
Dim YaziciSecim As String

YaziciSecim = ThisWorkbook.Sheets("Sayfa1").Range("A1").Value ' Örneğin A1’de seçim var

Select Case YaziciSecim
Case "101"
Call YaziciDegistir("\\SunucuAdı\Yazici101")
Case "102"
Call YaziciDegistir("\\SunucuAdı\Yazici102")
Case "103"
Call YaziciDegistir("\\SunucuAdı\Yazici103")
End Select
End Sub


✅ Sonuç:
  • İstediğini yapmak mümkün.
  • Excel’de buton → yazıcıyı değiştir.
  • Ya da VBS ile → çift tıklayınca yazıcı değişsin.
  • Tüm işin püf noktası: RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "YazıcıAdı" komutudur.
 
Üst