Makroyu etkinleştirmeden excel içeriğini göremesin

Katılım
10 Mayıs 2011
Mesajlar
5
Excel Vers. ve Dili
unknown
Merhaba üstadlarım,

Office 2016 da bir form tasarladım. Yaklaşık 15 kullanıcı var 1 tane admin. Admin tüm sayfaları görecek kullanıcı adı şifreleri değiştirebilecek. Kullanıcılar kendi kullanıcı adı şifreleri ile girip sadece kendi sayfalarını görüp değişiklik yapabilecekler.

Sayfam hazır halde bu dosyayı şirket sunucusunda ortak bir alan açıp oraya koyacağız. Bilgi girişi yapacak kullanıcılar buraya girecek.

Dosya hazır herşey tamam, tek sorun her kullanıcı dosyayı ilk açtığında makroları etkinleştirmesi gerekiyor. Fakat makroyu etkinleştirmezse tüm sayfaları kullanıcı girişi yapmadan görebiliyor.

Ben istiyorum ki, kullanıcılar makroya izin vermeden sayfaların içeriğini göremesin. Bunu yapabilmemiz mümkün mü?
 
Katılım
6 Mart 2024
Mesajlar
65
Excel Vers. ve Dili
Excel 2013 TR & Excel 2016 TR
Merhaba,
Manuel olarak
Excel Kitabınıza bir tane Karşılama sayfası ekleyiniz
şifre girişi için kullandığınız UserForm u açan bir Buton nu bu sayfaya koyabilirsiniz

Vba ile
Kişi Kitabı kapatırken
Karşılama
Sayfası hariç Tüm sayfaları gizle ve Kitabı korumaya al
kısaca evden çıkarken ütünün fişini çekmeyi unutma

Şifreyi bilen istediğiniz kişiler gelince
Kitap korumasını aç ve kişiye özel sayfaları göster, Karşılama sayfasını gizle

ve en son VBA editörü şifrele

Şifreyi bilmeyen veya Makroyu etkinleştirmemiş kişiler gelince
Karşılama sayfası hariç hiç bir şey göremeyecek
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
558
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Excel VBA'da, makro etkinleştirilmediğinde belirli bir sayfanın içeriğini gizlemenin basit bir yolu aşağıdaki gibi olabilir:

Private Sub Workbook_Open()
If Not Application.AutomationSecurity = msoAutomationSecurityLow Then
Sheets("Sayfa1").Visible = xlSheetVisible
Else
Sheets("Sayfa1").Visible = xlSheetVeryHidden
End If
End Sub

Bir üst mesajdaki tarifi uygulamak için Öncelikle Excel kitabınıza bir "Karşılama Sayfası" ekleyin ve bu sayfaya, kullanıcıların şifre girmesi için bir buton ekleyin. Bu buton, kullanıcıyı şifre giriş formuna yönlendirecek.

Şifre giriş formu (UserForm) oluşturun:
  1. Excel’de Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Insert menüsünden UserForm seçin.
  3. UserForm’a bir TextBox (şifre girişi için) ve bir CommandButton (şifreyi onaylamak için) ekleyin. Şifre kontrolü için aşağıdaki kodu ekleyiniz
Private Sub CommandButton1_Click()
If TextBox1.Text = "GizliSifre" Then
ThisWorkbook.Sheets("Karşılama Sayfası").Visible = xlSheetVeryHidden

ThisWorkbook.Sheets("Sayfa1").Visible = xlSheetVisible
ThisWorkbook.Sheets("Sayfa2").Visible = xlSheetVisible

Unload Me
Else
MsgBox "Geçersiz şifre!", vbExclamation
End If
End Sub

Kitap kapatılırken sayfaları gizlemek ve korumak için aşağıdaki kodu ThisWorkbook modülüne ekleyin:

Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="KorumaSifre"

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Karşılama Sayfası" Then
ws.Visible = xlSheetVeryHidden
End If
Next ws

ThisWorkbook.Sheets("Karşılama Sayfası").Visible = xlSheetVisible
End Sub


VBA kodlarını korumak için VBA editöründe şifre ayarlayabilirsiniz:
  1. VBA editöründe Tools menüsünden VBAProject Properties seçeneğine tıklayın.
  2. Protection sekmesine gidin.
  3. Lock project for viewing seçeneğini işaretleyin ve bir şifre girin.
  4. OK tuşuna basın ve dosyayı kaydedin.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,444
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Office 2016 da bir form tasarladım. Yaklaşık 15 kullanıcı var 1 tane admin.
" Teorik olarak " tek userform birden fazla masada açılırsa çakışma ya da performans sorunu yapabilir. Bu sorunu aşmak için kullanıcı kadar userform açmak ve bütün farklı form kodlarına kullanıcı adını yerleştirmek ama bunun olduğu textbox ya da labele elle girişi engellemek her masada kaydı benzersiz düşürebilir ve çakışma ya da performans riski en aza inebilir. Form zaten girilen şifreye bağlı olarak ve kendisine ait olan açılacaktır.

Denediğinizde bilgi vermeniz cogu kişiye faydalı olabilir
 
Katılım
10 Mayıs 2011
Mesajlar
5
Excel Vers. ve Dili
unknown
Merhaba,
Manuel olarak
Excel Kitabınıza bir tane Karşılama sayfası ekleyiniz
şifre girişi için kullandığınız UserForm u açan bir Buton nu bu sayfaya koyabilirsiniz

Vba ile
Kişi Kitabı kapatırken
Karşılama
Sayfası hariç Tüm sayfaları gizle ve Kitabı korumaya al
kısaca evden çıkarken ütünün fişini çekmeyi unutma

Şifreyi bilen istediğiniz kişiler gelince
Kitap korumasını aç ve kişiye özel sayfaları göster, Karşılama sayfasını gizle

ve en son VBA editörü şifrele

Şifreyi bilmeyen veya Makroyu etkinleştirmemiş kişiler gelince
Karşılama sayfası hariç hiç bir şey göremeyecek
Üstadım bu fikir gerçekten inanılmaz işe yaradı. Çok teşekkür ederim tam istediğim gibi oldu.
 
Katılım
10 Mayıs 2011
Mesajlar
5
Excel Vers. ve Dili
unknown
" Teorik olarak " tek userform birden fazla masada açılırsa çakışma ya da performans sorunu yapabilir. Bu sorunu aşmak için kullanıcı kadar userform açmak ve bütün farklı form kodlarına kullanıcı adını yerleştirmek ama bunun olduğu textbox ya da labele elle girişi engellemek her masada kaydı benzersiz düşürebilir ve çakışma ya da performans riski en aza inebilir. Form zaten girilen şifreye bağlı olarak ve kendisine ait olan açılacaktır.

Denediğinizde bilgi vermeniz cogu kişiye faydalı olabilir
Evet dediğinize katılıyorum. Benzer bir formu 6 kullanıcı ile tek pc üzerinden halihazırda kullanıyoruz. Tabi aynı pc üzerinde olduğu için herkesin aynı anda girme ihtimali yok.

Fakat bu dosya sunucu üzerinden sunulacağı için bu biraz karışıklık yaratabilir.

Vba bilgim de kısıtlı açıkçası araştıra araştıra, siteden kodları inceleyerek, Youtube kanallarından video izleyerek yaptım programı. Normal işim şoförlük :) Bu kadar komplike birşey yapabilir miyim emin değilim açıkçası :)

Ama vakit buldukça deneyeceğim ve başarabilirsem sonucu mutlaka paylaşacağım, teşekkür ederim.
 
Üst