userformu yatay yazdırma

Katılım
22 Nisan 2005
Mesajlar
245
userformumun genişliği a4 kağıdından büyük printform komutuyla yazdırdığımda formun yarısı yazılıyor. hani excel ktabında sayfa yapısı bölünda yatay dikey varya ona benzer formu yatay yazdırabilirmiyiz.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,030
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
userformumun genişliği a4 kağıdından büyük printform komutuyla yazdırdığımda formun yarısı yazılıyor. hani excel ktabında sayfa yapısı bölünda yatay dikey varya ona benzer formu yatay yazdırabilirmiyiz.
Kağıt ayarını yatay yapıp sonra userformu yazdırınca istediğiniz gerçekleşmiyormu?
 
Katılım
22 Nisan 2005
Mesajlar
245
denedim olmadı.
şöyle birşey yapıyorum.
print screen tşu ile ekranın fotografonı çekiyorum. fotoğrafı painte atıp çeviriyorun ancak öyle yazıyor. her çıktı için bunu yapmak bayağı zor oluyor
 
Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
Merhaba,

Ben de Userform'u yatay yazdırmanın yollarını ararken cevabı burada bulamayınca yabancı bir VBA sitesinde de arama yaptım. Orada bulduğum çok hoş bir çözümü sizlerle paylaşayım.

Aşağıdaki kodları Userform'un kod kısmının başına yerleştiriyoruz.
Kod:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
  bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12


Ayrıca "Yazdır" butonu olarak oluşturduğunuz CommandButton'a da aşağıdaki kodu ekliyorsunuz.

Kod:
Dim wb As Workbook
Dim sh As Worksheet
'
CommandButton1.SetFocus
AltPrintScreen
DoEvents
'
Application.ScreenUpdating = False
'
Set wb = Workbooks.Add(template:=xlWBATWorksheet)
Set sh = wb.Sheets(1)
'
sh.Paste
'
With sh.PageSetup
    .FitToPagesTall = 1
    .FitToPagesWide = 1
    .Orientation = xlLandscape
    .Zoom = False
End With
'
sh.PrintOut
'
wb.Close False
'
Application.ScreenUpdating = True
'
Set sh = Nothing
Set wb = Nothing

Son olarak aşağıdaki kodu da Userform'a ekliyoruz.

Kod:
Private Sub AltPrintScreen()
    keybd_event VK_MENU, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End Sub


"Yazdır" butonuna bastığınızda kod aktif UserForm için "PrintScreen" komutu ile ekran görüntüsünü kopyalayıp geçici bir excel dosyası açacak ve
Userform'u oraya kopyalayacak, ardından yazdırma ayarlarında sayfaya sığdırma yapılacağı için Userform'unuz tek sayfada yazıcıdan çıkacaktır.

Bu arada;
Kod:
    .Orientation = xlLandscape
Yerine
Kod:
    .Orientation = xlPortrait
kullanarak çıktıyı yatay yerine dikey de alabilirsiniz. Ama burada sorulan yatay çıktı almak olduğu için şu anki şekilde kalması sizin sorununuzu çözecektir.

Kolay Gelsin.

Not: Aradan neredeyse 6 ay geçtiğini biliyorum. Belki hala bu sorunun çözümünü arayanlar vardır diye düşündüm.

Kaynak: www.mrexcel.com
(Adminler URL verilmesini uygun bulmazsa kaynak bilgisini silebilirler)

 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,030
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kaynak: www.mrexcel.com
(Adminler URL verilmesini uygun bulmazsa kaynak bilgisini silebilirler)
Sn sergions

Bizler bugüne kadar gösterilen bir kaynağın linkine hiçbir zaman karşı olmadık aksine kaynağın mutlaka belirtilmesinin gerekliliğini savunduk. Bu sebeple linki görünmesin diye en küçük fontta yazmanızada gerek yok, ben linki burada bir kez daha yazıyorum.

www.mrexcel.com
 
Katılım
16 Ağustos 2004
Mesajlar
137
Excel Vers. ve Dili
Office 2010 En 64 Bit
Sayın leventm,

Siz de takdir edersiniz ki internet ortamındaki akademik veya eğlence amaçlı forumların bir çoğunda başka sitelerin referans verilmesine izin verilmeyebiliyor. Bu sitenin yaklaşımını hatırlamadığım için tüm forumlarda olduğu gibi bu forumdaki dış başvurulara da yukarıdaki gibi bir dip not düşerim.

Küçük font kullanılması da kitaplardan gelen bir format takıntısından ibarettir ve olması gerekenin de bu olduğunu düşünüyorum.

İyi çalışmalar.


Not: Konu başlığındaki harf hatasını düzeltebilir misiniz?
 
Katılım
16 Eylül 2006
Mesajlar
72
Excel Vers. ve Dili
2010 TÜRKÇE
Emeğinize sağlık bende tam böyle bir şey arıyordum .
TEŞEKKÜRLER.
 
Katılım
12 Mart 2009
Mesajlar
2
Excel Vers. ve Dili
v.2003/türkçe
Private Sub CommandButton7_Click()
UserForm1.PictureSizeMode = fmPictureSizeModeClip
Me.PrintForm
End Sub
ben bu şekilde denemdim oldu arkadaşlar...
 
Katılım
11 Nisan 2009
Mesajlar
43
Excel Vers. ve Dili
2010 TR
Teşekkürler

Paylaşım için teşekkürler

Merhaba,

Ben de Userform'u yatay yazdırmanın yollarını ararken cevabı burada bulamayınca yabancı bir VBA sitesinde de arama yaptım. Orada bulduğum çok hoş bir çözümü sizlerle paylaşayım.

Aşağıdaki kodları Userform'un kod kısmının başına yerleştiriyoruz.
Kod:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
  bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12


Ayrıca "Yazdır" butonu olarak oluşturduğunuz CommandButton'a da aşağıdaki kodu ekliyorsunuz.

Kod:
Dim wb As Workbook
Dim sh As Worksheet
'
CommandButton1.SetFocus
AltPrintScreen
DoEvents
'
Application.ScreenUpdating = False
'
Set wb = Workbooks.Add(template:=xlWBATWorksheet)
Set sh = wb.Sheets(1)
'
sh.Paste
'
With sh.PageSetup
    .FitToPagesTall = 1
    .FitToPagesWide = 1
    .Orientation = xlLandscape
    .Zoom = False
End With
'
sh.PrintOut
'
wb.Close False
'
Application.ScreenUpdating = True
'
Set sh = Nothing
Set wb = Nothing

Son olarak aşağıdaki kodu da Userform'a ekliyoruz.

Kod:
Private Sub AltPrintScreen()
    keybd_event VK_MENU, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, 0, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End Sub


"Yazdır" butonuna bastığınızda kod aktif UserForm için "PrintScreen" komutu ile ekran görüntüsünü kopyalayıp geçici bir excel dosyası açacak ve
Userform'u oraya kopyalayacak, ardından yazdırma ayarlarında sayfaya sığdırma yapılacağı için Userform'unuz tek sayfada yazıcıdan çıkacaktır.

Bu arada;
Kod:
    .Orientation = xlLandscape
Yerine
Kod:
    .Orientation = xlPortrait
kullanarak çıktıyı yatay yerine dikey de alabilirsiniz. Ama burada sorulan yatay çıktı almak olduğu için şu anki şekilde kalması sizin sorununuzu çözecektir.

Kolay Gelsin.

Not: Aradan neredeyse 6 ay geçtiğini biliyorum. Belki hala bu sorunun çözümünü arayanlar vardır diye düşündüm.

Kaynak: www.mrexcel.com
(Adminler URL verilmesini uygun bulmazsa kaynak bilgisini silebilirler)

 
Katılım
15 Kasım 2007
Mesajlar
140
Excel Vers. ve Dili
OFFICE 2019 TR 64 Bit
Özür Dilerim Çok Eski Bir Konu ama
win 10 office2013 64 bit kullanıyorum
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
burada nasıl bir değişiklik yapmam gerekiyor.hata veriyor
 
Katılım
15 Kasım 2007
Mesajlar
140
Excel Vers. ve Dili
OFFICE 2019 TR 64 Bit
win 10 office2013 64 bit kullanıyorum
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Görseldeki kırmızı yazılan yerdeki "Declare" ifadesinden sonra "PtrSafe" ifadesini ekleyerek çözüm buldum.
 

dogu34

Altın Üye
Katılım
18 Ekim 2020
Mesajlar
58
Excel Vers. ve Dili
2007 Türkçe
win 10 office2013 64 bit kullanıyorum
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Görseldeki kırmızı yazılan yerdeki "Declare" ifadesinden sonra "PtrSafe" ifadesini ekleyerek çözüm buldum.
Hocam benimde 64 bitte kullanmam gerekiyor konu eski ama yardımcı olma şansınız varmı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,325
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#5 nolu mesajda nasıl yapacağınız tarif edilmiş. Neresini yapamadınız?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,325
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
64 bit için deklarasyon kodunu düzenlemeniz gerekiyor. Bu işlem içinde #12 nolu mesajda çözüm verilmiş.
 

dogu34

Altın Üye
Katılım
18 Ekim 2020
Mesajlar
58
Excel Vers. ve Dili
2007 Türkçe
Evet hocam o şekilde denedim ama olmadı mesajın yanlis yazılabileceğini düşündüğümden dolayı sordum
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,325
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başka bir yerde hata yapıyor olabilirsiniz.

Örnek dosyanızı paylaşınız.
 

dogu34

Altın Üye
Katılım
18 Ekim 2020
Mesajlar
58
Excel Vers. ve Dili
2007 Türkçe
ilginize teşekkürler hocam yarin ofiste tekrar denerim olmazsa dosya paylaşırım.
iyi akşamlar
 
Üst