• DİKKAT

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

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



tepsi1.JPG





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




tepsi2.JPG


Teşekkürler
 
Son düzenleme:
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.
 
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
 
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.
 
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.
 
Kod:
Sub YAZICISECYAZDIR()
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
End Sub

şeklinde deneyiniz.
 
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.
 
Ö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.
 
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-...l-basic-applications-code-tray-selection.html
 
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



tepsi1.JPG





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




tepsi2.JPG
 
Son düzenleme:
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.
 
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



.
 
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,


hatamesaji.JPG



hatamesaji2.JPG
 
Son düzenleme:
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.
 
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.
 
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
 
Önerdiğim kodları deneme fırsatınız oldu mu?

Sonucu merak ediyorum...
 
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.
 
Geri
Üst