• DİKKAT

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

VBA Yazıcı seçimi yapma atama değiştirme

Katılım
10 Nisan 2005
Mesajlar
99
Excel Vers. ve Dili
Excel 2019 Türkçe
Arkadaşlar,

İş yerinde ortak kullandığımız bir excel tablosunda network ortamında bir birine bağlı 2 adet yazıcı ve 7 adet PC den, veriye göre yazıcılardan birini seçip çıktıyı ona gönderen bir makro yazdım.
Sorunum bu yazıcıların uzantılarındaki NE** PC göre değişken olması.

Örnek olarak;

prt2 = "\\dmn\P213_B010_HpLJP2055 on Ne05:"
prt1 = "\\t120031\BMP71 (Copy 1) on Ne03:"

prt2 = "\\dmn\P213_B010_HpLJP2055 on Ne02:"
prt1 = "\\t120031\BMP71 (Copy 1) on Ne01:"

prt2 = "\\dmn\P213_B010_HpLJP2055 on Ne04:"
prt1 = "\\t120031\BMP71 (Copy 1) on Ne01:"

Her bir PC de yazıcı adreslerinin sonudaki "Ne" den sonra gelen rakamlar farklı böyle olunca da aktif yazıcı şu adres diye tanıtamıyorum.
Her bir PC için tek tek tanıtmayı denedim fakat bu seferde zaman içerisinde device printer ekleme ve çıkartma yapınca bu mumaralar değişebiliyor, o zaman makro çalışmaz oluyor.

Sorunun çözümü konusunda yardımcı olabilirseniz sevinirm.

Teşekkürler.
 
Aşağıdaki kodları sayfanın kod bölümüne kopyalayın ve iki adet komut düğmesi ekleyin komut dümesinin birtanesi yüklü yazıcıları A sutünuna listelemektedir listelenen yazıcılardan var sayılan yazıcı yapmak için yazıcıya ait A sutunundaki yazan yazıcılardan birine tıklayın ve diğer komut düğmesini tıklayın

kod:

Kod:
Private Sub CommandButton1_Click()

Dim WSHNetwork
Dim objWMIService
Dim colPrinters
Dim objPrinter

Set WSHNetwork = CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
For Each objPrinter In colPrinters
sat = sat + 1
Cells(sat, 1) = objPrinter.name
Next

Set WSHNetwork = Nothing
Set objWMIService = Nothing
Set colPrinters = Nothing

End Sub

Private Sub CommandButton2_Click()
On Error Resume Next

Dim WSHNetwork
Dim objWMIService
Dim colPrinters
Dim objPrinter

Set WSHNetwork = CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")

aranan = Cells(1, 2)
For Each objPrinter In colPrinters
If aranan = objPrinter.name Then
WSHNetwork.SetDefaultPrinter objPrinter.name
'ActiveWindow.SelectedSheets.PrintOut

Exit For
End If
Next


Set WSHNetwork = Nothing
Set objWMIService = Nothing
Set colPrinters = Nothing

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [a1:a20]) Is Nothing Then Exit Sub

If Len(Target.Value) > 0 Then
Cells(1, 2) = Target.Value
End If
End Sub
 
Halit bey, eklediğiniz kod default yazıcıyı değiştirir ancak, Excel in "activeprinter" özelliğine dosya kapatılıp yeniden açıldığında gelir.
 
Sonunda çözüm buldum, yazıcının sonunda bulunan Ne** numarasını döngüye sokuyorum oradan uygun Ne** numarasını eşleştiriyorum.
İlginiz için teşekkürler
 
Geri
Üst