Makro İle Yazıcıda Tepsi Seçmek !

Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
İyi günler,

Makro ile ;

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1

normal yazdır komutu bu şekilde çalışmakta,

fakat benim sorum

yazıcı özelliklerinde, kağıt kaynağı TEPSI1 TEPSI2 şeklinde yerlerim var

TEPSI1 den A5 boyutlu kağıtları TEPSI2 den ise A4 boyutlu kağıtları yazdırıyorum,

Bu üsttteki,

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1

kodun önüne TEPSI2 yi otomatik olarak nasıl ekleyebilirim, yani yazıcının kağıt kaynağına nasıl müdahale edebilirim, bu şekilde bir kod varmı ?

yardımcı olursanız sevinirim.


1.sinde bu kağıt kaynağı A4 için tepsi2 seçili olacak makro butonuna bastığımda otomatikman a4 belgesi yazacak
2.sinde bu kağıt kaynağı A4 için tepsi1 seçili olacak makro butonuna bastığımda otomatikman a5 belgesi yazacak,

istediğim bu şekilde yazıcının içindeki tepsi bölümüne müdahale edebilmek,


Kağıt boyutu bölümü yazıcıdan değişmeyecek, sadece iş tepsi ile bitiyor !


ekte resimlerde belirtiyorum, 1. Resimdeki gibi 1. makro ile tepsi1 seçtirmek tepsi1 de çünkü A5 kağıt var








ekte resimlerde belirtiyorum, 2. Resimdeki gibi 2. makro ile tepsi2 seçtirmek tepsi2 de çünkü A4 kağıt var






Teşekkürler
 
Son düzenleme:

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
makro kaydet deyin
kendiniz tepsi 1 i seçerek birşey yazdırın
makro kaydetmeyi durdurun

aynı şekilde makro kaydet deyip
tepsi 2 yi seçip birşey yazdırın
makro kaydetmeyi durdurun

kaydettiğiniz makroları karşılaştırıp sorununuzu çözün.

Eğer sorunu çözemezseniz kaydettiğiniz makroları kopyalayıp buraya yapıştırın biz çözmeye çalışalım.
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
dalgalikur, hocam dediğinizi yaptım fakat o işlemlerden bir kod atmıyor, gene bana

ActiveWindow.SelectedSheets.Pr (Whois)intOut From:=1, To:=1, Copies:=1

bu kadarını veriyor makro kaydında
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
Sub YENI()
'
' YENI Makro
'

'
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
End Sub


BU Şekilde çıktı karşımı, tepsi2 seçdiğimde onu yazıcının bir özelliği olduğu için görmüyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
VBE yazıcının özel ayarını koda çeviremez. Makro kodunun oluşmamasının sebebi budur. Bu istediğinizi yazdırmadan önce yazıcının tepsi ayarını API ile değiştirerek yapabilirsiniz.

Emin olmamakla birlikte karşılaşılabilecek bir diğer problem de, aktif dosya yazıcının ayarlarını da hafıza da tutacağı için yapılacak tepsi ayar değişikliğini hemen algılamayabilir. Bu durumda sheet.copy veya range.copy metodu ile değişikliğin geçerli olabileceği farklı excel.exe instance üzerinde yazdırılabilir.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Kod:
Sub YAZICISECYAZDIR()
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
End Sub
şeklinde deneyiniz.
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
Turist bu göndermiş olduğunuz kod ile farklı yazıcılar var ise seçimi yapılabiliyor ve yazıcı özelliklerine giriş yapılabiliyor, teşekkür ederim

Fakat aradığım bu değil direk yazıcının tepsi1 ve tepsi2 sine müdahe edebilecek bir yöntem arıyorum.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Önerdiğim, pratik ve kısa bir çözüm idi.
Sn.Gürsoy'un da belirttiği gibi, memory sorunu olacağı için; farklı bir yöntem uygulamak gerekecektir.
Uzman arkadaşlarımız ilgilenirlerse cevap vereceklerdir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,180
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Belki SENDKEYS metodu kullanılarak çözüm üretilebilir.

Kullandığınız yazcının tepsi değiştirme işlemini adım adım buraya yazarsanız uygun SENDKEYS kodu yazılıp seçim yaptırılabilir.

Örnek İşlem Adımları;

İlk önce CTRL+P tuşlarına basıyorum.
Ardından açılan penceredeki 3. sekmeye tıklıyorum.
Açılan penceredeki 4. seçim kutusundan Tepsi 2 yi seçiyorum.
İki kez ENTER tuşuna basıp işlemi tamamlıyorum.

Bu şekilde işlem adımlarını yazarsanız uygun kod yazılabilir.

Ayrıca linkte bir API kodlaması verilmiş. Deneyebilirsiniz.

http://www.mrexcel.com/forum/excel-questions/38658-excel-printing-visual-basic-applications-code-tray-selection.html
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
Konuyu şöyle özetleyelim,

1. aşama ON belgesinde Ctrl+p ile yazıcıya ulaşıyoruz
2. aşama yazıcı HPLazerjet400 seçili
3. altında yazıcı özelliklerinden
4. kağıt kalite bölümünden, kağıt kaynağı A4 için Tepsi2, a5 İçin Tepsi1 elle seçiyorum

benim istediğim 2 ayrı kod ile

1.sinde bu kağıt kaynağı A4 için tepsi2 seçili olacak makro butonuna bastığımda otomatikman a4 belgesi yazacak
2.sinde bu kağıt kaynağı A4 için tepsi1 seçili olacak makro butonuna bastığımda otomatikman a5 belgesi yazacak,

istediğim bu şekilde yazıcının içindeki tepsi bölümüne müdahale edebilmek,


Kağıt boyutu bölümü yazıcıdan değişmeyecek, sadece iş tepsi ile bitiyor !


ekte resimlerde belirtiyorum, 1. Resimdeki gibi 1. makro ile tepsi1 seçtirmek tepsi1 de çünkü A5 kağıt var








ekte resimlerde belirtiyorum, 2. Resimdeki gibi 2. makro ile tepsi2 seçtirmek tepsi2 de çünkü A4 kağıt var




 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Bu konuda bir çalışmam (class module) var, deneyip işe yarayıp yaramadığını bildiririm.

-------------
Korhan bey, verdiğiniz likteki standartlara HP uymuyor. Yani numerik sabitler HP de farklıdır.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Yazıcınızı varsayılan yapın ve ekli dosyayı test edin.

Deneme imkanım olmadı. Yazıcının tepsi ayarı yapılıyor ancak bu ayarı ikinci ve sonraki denemelerde tepsi ayarı değişikliğini algılayıp algılamadığını bildiriniz.

Tepsi_deneme İndir



.
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
Yazıcınızı varsayılan yapın ve ekli dosyayı test edin.

Deneme imkanım olmadı. Yazıcının tepsi ayarı yapılıyor ancak bu ayarı ikinci ve sonraki denemelerde tepsi ayarı değişikliğini algılayıp algılamadığını bildiriniz.

Tepsi_deneme İndir



.

Zeki bey,

denedim göndermiş olduğunuz dosyayı teşekkür ederim,

fakat tepsi1 ve tepsi2 de de aynı şekilde, aşağıdaki gibi bir hata mesajı verdi,





 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Günaydın,

Ayarlar "devmodeperuser" içinde saklanır. Yazıcıya hiç ayar yapılmamış gibi görünüyor.
Şu adımları uygulayın:

- Denetim masasından, yazıcının ayarlarına gidip herhangi bir ayarını değiştirip "uygula" deyin.
- Yazıcının ayarını eski haline getirin, "uygula" > "tamam"

Registry de bulunamayan o konum artık yerleşmiş olacak. Ardından dosyayı test edebilirsiniz.
 
Katılım
19 Ekim 2013
Mesajlar
12
Excel Vers. ve Dili
2013
Günaydın,

Ayarlar "devmodeperuser" içinde saklanır. Yazıcıya hiç ayar yapılmamış gibi görünüyor.
Şu adımları uygulayın:

- Denetim masasından, yazıcının ayarlarına gidip herhangi bir ayarını değiştirip "uygula" deyin.
- Yazıcının ayarını eski haline getirin, "uygula" > "tamam"

Registry de bulunamayan o konum artık yerleşmiş olacak. Ardından dosyayı test edebilirsiniz.

Zeki bey , tekrar denedim dediğiniz gibi hata vermedi, yazdırdı fakat standart gene 2 butonda da tepsi1 den çıkış verdi, yani varsayılan ayardan

bu yazıcının beynine inip tepsi1 ve tepsi2 yuvalarının ne şekilde kayıtlı olduğu ismi bulmak lazım sanırım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,180
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Ben SENDKEYS metodu ile kendi bilgisayarımda aşağıdaki kod ile sonuç aldım. (Yazıcımız XEROX)

Kod:
Sub TEPSİ_BİRİ_SEÇ_YAZDIR()
    Application.SendKeys "%{a}{TAB 2} {DOWN 6}{RIGHT}{DOWN 1}~~~"
    Application.Dialogs(xlDialogPrinterSetup).Show
    Sheets("Sayfa1").PrintPreview
    'Sheets("Sayfa1").PrintOut Copies:=1, Collate:=True
End Sub

Sub TEPSİ_İKİYİ_SEÇ_YAZDIR()
    Application.SendKeys "%{a}{TAB 2} {DOWN 6}{RIGHT}{DOWN 2}~~~"
    Application.Dialogs(xlDialogPrinterSetup).Show
    Sheets("Sayfa1").PrintPreview
    'Sheets("Sayfa1").PrintOut Copies:=1, Collate:=True
End Sub

Sizin resim olarak gönderdiğiniz ekran görüntülerine göre tahminimce aşağıdaki kodlar işinizi görecektir. Deneyip sonucu bildirirsiniz.

Kod:
Sub TEPSİ_İKİYİ_SEÇ_YAZDIR()
    Application.SendKeys "%{a}^{TAB 2}{TAB 3} {DOWN 2}~~~"
    Application.Dialogs(xlDialogPrinterSetup).Show
    Sheets("Sayfa1").PrintPreview
    'Sheets("Sayfa1").PrintOut Copies:=1, Collate:=True
End Sub

Sub TEPSİ_BİRİ_SEÇ_YAZDIR()
    Application.SendKeys "%{a}^{TAB 2}{TAB 3} {DOWN 1}~~~"
    Application.Dialogs(xlDialogPrinterSetup).Show
    Sheets("Sayfa1").PrintPreview
    'Sheets("Sayfa1").PrintOut Copies:=1, Collate:=True
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,180
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodları deneme fırsatınız oldu mu?

Sonucu merak ediyorum...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,180
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Önerdiğim yöntem ile kendim sonuç almıştım.

Fakat üyemizden bir dönüş olmadı. Bu sebeple kendisindeki durumu bilemiyorum.

Siz kendinize uyarlarken ilk olarak bu işlemi elle yapacaksınız. Bu arada hangi tuşlara bastığınızı not almalısınız. Sonra bu tuşlara makro ile komut göndermelisiniz. Yani "Sendkeys" metodunu uygulamalısınız.
 
Üst