Dosyanın başlık kısmındaki butonları kapatmak

Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Merhaba,

UserForm üzerindeki Maksimize Minimize kapla ve kapat gibi işlevleri yerine getiren ve başlıkta sağ köşede bulunan butonları iptal etme ya da işlevini engelleme gibi çalışmalar var.

Dosyanın sağ üst köşesinde de aynılarından var. Bunları aynı mantıkla engelleme ya da kaldırma yapılabilmekte midir?

İyi çalışmalar.

Saygılarımla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bunun için çalışma kitabına araçlar-koruma-çalışma kitabını koru-yapı+pencereler den koruma koymanız yeterlidir.
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Bu konu çözümsüz ise; "çözümü yoktur", şeklinde bana bildirebilirseniz, ben en azından boşuna araştırmaya devam etmemiş olacağım. Bu konuda cevap yazabilirseniz memnun olurum.
iyi çalışmalar
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bir önceki mesajımı okuyabilirsiniz.
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Teşekkür ederim
kolay gelsin.
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Sayın Leventm
merhaba
Bu arada denedim ama bir değişiklik olmadı neden acaba?
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Aşağdaki kodu deneyiniz.
Kod:
Sub Düğme1_Tıklat()
CommandBars("Worksheet Menu Bar").Enabled = CommandBars("Worksheet Menu Bar").Enabled = False
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
MS Excel'in kendisine ait söz konusu düğmeler de aşağıdaki kodla pasifize edilebilir ama, sonradan nasıl düzeltilir şimdilik bilmiyorum .... :mrgreen:

Ama merak etmeyin, Alt+F4 yapıp dosyayı kapattıktan sonra tekrar açarsanız düzelir ....

Kod:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'
Sub Test()
    Dim MyHandle
    Dim hWnd As Long
    hWnd = FindWindowA(vbNullString, Application.Caption)
    MyHandle = GetSystemMenu(hWnd, 0)
    For i = 6 To 0 Step -1
        Call RemoveMenu(MyHandle, i, &H400)
    Next
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Aşağıdaki kodlarla hem MS Excel'in kendisine ait sağ üst menüleri kullanılmaz hale getirilir hem de gerektiğinde bu menüleri tekrar kullanılabilir hale getirebilirsiniz ....

Kodun kaynağına aşağıdaki linkten ulaşabilirsiniz ....

http://www.mrexcel.com/forum/showthread.php?t=145950

Kod:
Declare Function GetSystemMenu Lib "user32" _
   (ByVal hwnd As Long, ByVal bRevert As Long) As Long
   
Declare Function RemoveMenu Lib "user32" _
    (ByVal hMenu As Long, ByVal nPosition As Long, _
    ByVal wFlags As Long) As Long

Declare Function FindWindowA Lib "user32" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

Const MF_BYPOSITION = &H400
Const strXLClass As String = "XLMAIN"

Dim hWndXL As Long
'
Sub Remove_X_Button2()
    hWndXL = FindWindowA(strXLClass, vbNullString)
    For i = 6 To 0 Step -1
        RemoveMenu GetSystemMenu(hWndXL, 0), i, MF_BYPOSITION
    Next
End Sub
'
Sub Reset_X_Button2()
    GetSystemMenu hWndXL, True
End Sub
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long

Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long

Declare Function FindWindowA Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Const MF_BYPOSITION = &H400
Const strXLClass As String = "XLMAIN"


Sayın Haluk

Merhaba,

Yukardaki alanları kabul etmiyor. Çünkü benze kodlamalar UserFormların üst başlık butonlarının düzenlenmesi için kullanılmıştı. Çakıştığı için bunları ThisWorkbook'a ne de Form üzerine bunları aktaramıyorum.

Bir çözüm var mı bu yönde?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eğer UserForm modulünde bu satırların aynıları varsa, UserForm modulünden silin. Yukarıdaki kodları da boş yeni bir module kopyalayıp oradan çalıştırın.
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Aslında aynıları tipe tip değil ama User32 ler tabiki. Bunları silersem,UserFormun bu konuda %100 gerekli işlevlerini yitirmiş olmam mı? Sonuçta UserFormun Minimize Maksimize ve Kapatma düğmelerinin yönetimi gerekiyor burası için. Ben mi anlayamadım sizi ama..?
 
Katılım
23 Temmuz 2007
Mesajlar
178
Excel Vers. ve Dili
2003 Türkçe
Bunlar var.

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Haluk,

Sistem konusunda ki bilgilerinizden gururla yararlanıyorum, teşekkürler... Ancak yukarıda verdiğiniz kodlar Excel 2007 de çalışmıyormu? Dediğiniz gibi kodları bir modüle yazıp, program içinde çağırdım ve program çıkışında da;

GetSystemMenu hWndXL, True

ile resetledim ama userform dan normal excel sayfasına çıkış yapılıp geri Userform a dönülen programımda excel sayfasında menüler engellenmedi..

Saygılarımla,
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
...... Userform a dönülen programımda excel sayfasında menüler engellenmedi..
Aslında söz konusu olan Excel'in sistem menüleridir. Yani, ekranın sağ üst köşesinde yer alan - [] X işaretlerinin yer aldığı küçük düğmelerdir.

Diğer bir deyişle; Excel'in en üstünde mavi renkli başlık çubuğunda sağ tıkladığınızda veya sol üst köşedeki Excel'in simgesi üzerinde sol tıkladığınızda çıkan menülerdir, sistem menüleri.

Bende 2007 versiyonu olmadığı için, kodların uyumu hakkında bir yorum yapamayacağım.

Saygı bizden...

.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn haluk hocam aşiağıdaki kodlarınızı bende denedim
excel başlığındaki X butonunu kullanılır/kullanılmaz yapıyor. kaldırmıyor sorun bendemi acaba excel 2003 kullnıyorum

Kod:
Declare Function GetSystemMenu Lib "user32" _
   (ByVal hwnd As Long, ByVal bRevert As Long) As Long
   
Declare Function RemoveMenu Lib "user32" _
    (ByVal hMenu As Long, ByVal nPosition As Long, _
    ByVal wFlags As Long) As Long

Declare Function FindWindowA Lib "user32" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

Const MF_BYPOSITION = &H400
Const strXLClass As String = "XLMAIN"

Dim hWndXL As Long
'
Sub Remove_X_Button2()
'Excel Kapat Düğmesini Pasif konuma getirir.
    hWndXL = FindWindowA(strXLClass, vbNullString)
    For i = 6 To 0 Step -1
        RemoveMenu GetSystemMenu(hWndXL, 0), i, MF_BYPOSITION
    Next
End Sub
'
Sub Reset_X_Button2()
''Excel Kapat Düğmesini Aktif konuma getirir.
    GetSystemMenu hWndXL, True
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
sn haluk hocam aşiağıdaki kodlarınızı bende denedim
excel başlığındaki X butonunu kullanılır/kullanılmaz yapıyor. kaldırmıyor sorun bendemi acaba excel 2003 kullnıyorum
Sorun sizde değil, RemoveMenu API'nin özelliği bu şekilde.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
cevabınız için teşekkür ederim.
 
Üst