gizli sütunü şifre ile açmak

Faydalı Buldunuz mu ?


  • Kullanılan toplam oy
    1
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Merhabalar,

Şöyle bir ihtiyacım var. Bir excel dosyam var. Zaman zaman farklı insanlar bu dosyaya read-only olarak erişiyorlar.

Bu dosyada ücretle ilgili 2 sutun var (B ve C). Bu sutunu gizlemek istiyorum ve sadece şifreyi verdiğim kişi erişsin istiyorum. Nasıl yapabilirim ? Aşağıdaki örnek de B ve C Sütunlarını gözükmez yapmak ve şifre girilirse açmak istiyorum. Bunun için Bir butun olabilir. Butona kliklediğinde şifreyi biliyorsa sutun gözükür hale gelebilir.

Bu bilgileri görecek kişi dosyada herhangi bir değişiklik yapma yetkisi yok. Sade görecek. Sonrasında da Muhasebe sisteminde fatura kesecek.

A B C D
Kitap_Adi Alış_Fiyatı Satış_Fiyatı Türü
1 Kitap 1 10 12 macera
2 Kitap 2 10 12 Aksiyon
3 Kitap 3 20 24 Dram

iyi çalışmalar

Ali
 
Katılım
3 Nisan 2014
Mesajlar
394
Excel Vers. ve Dili
Excel 2019 - Türkçe
Altın Üyelik Bitiş Tarihi
14-04-2021
Merhaba,

Aşağıdaki kodları bir modüle kopyalayıp dener misiniz?

Kod:
Sub Auto_Open()
Call gizle_goster
End Sub

Sub gizle_goster()

Set syf = Sheets("Sayfa1")
user = Environ("Username")

    If user <> "n.gen" Then
    '' Tırnak içinde sütunları görmesini istediğiniz kişilerin bilgisayar kullanıcı adlarını yazınız bıraya.
    '' user <>"asdf" and user<>"sdfg" and user<>"dfgh" gibi yazmalısınız.
        syf.Columns("B:C").Select
        Selection.EntireColumn.Hidden = True
        Range("A1").Select
        ActiveSheet.Protect "123"

    Else
        syf.Columns("B:C").Select
        Selection.EntireColumn.Hidden = False
        Range("A1").Select
        ActiveSheet.Unprotect "123"

    End If
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba Sayın rabbace.

Verdiğiniz kod'da elbette sorun ama bir hususu hatırlatmak isterim..
Satırı/sütunu gizlerken .Select veya .Activate kod satırlarını kullanmanız gerekmez.
Doğrudan syf.Columns("B:C").EntireColumn.Hidden = True / False şeklinde de kullanılabilir
ve Range("A1").Select gibi hücre seçimine ilişkin satırı da sadece yetkisiz kullanıcı için kullanmak ve aşağıdaki gibi değiştirmek yerinde olur bence.
If ActiveCell.Column = 2 Or ActiveCell.Column = 3 Then Cells(ActiveCell.Row, 1).Activate
 
Son düzenleme:
Katılım
3 Nisan 2014
Mesajlar
394
Excel Vers. ve Dili
Excel 2019 - Türkçe
Altın Üyelik Bitiş Tarihi
14-04-2021
Merhaba Sayın rabbace.

Verdiğiniz kod'da elbette sorun ama bir hususu hatırlatmak isterim.
Satırı/sütunu gizlerken .Select veya .Activate kod satırlarını kullanmanız gerekmez.
Doğrudan syf.Columns("B:C").EntireColumn.Hidden = True / False şeklinde de kullanılabilir
ve Range("A1").Select gibi hücre seçimine ilişkin satırı da sadece yetkisiz kullanıcı için kullanmak ve aşağıdaki gibi değiştirmek yerinde olur bence.
If ActiveCell.Column = 2 Or ActiveCell.Column = 3 Then Cells(ActiveCell.Row, 1).Activate
Merhaba Ömer bey,

Açıklamanız için teşekkür ederim, kodlama konusunda çok yeni sayılırım, sizlerin sayesinde yeni yeni şeyler öğreniyorum. Bildiklerimle de yardımcı olmaya çalışıyorum. :)
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Alıntı yapıldığından önceki cevabımdaki cümleyi düzeltmemin bir anlamı yok ama durumu açıklamam lazım.
Önceki mesajımdaki cümlede YOK kelimesini unutmuşum ve sanırım yanlış anlaşılabilecek bir durum oluşmuş,
cümlemin şöyle olması gerekiyordu:
Verdiğiniz kod'da elbette sorun YOK ama bir hususu hatırlatmak isterim. ........
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Şifrelemeyi makro kullanmadan da yapabilirsiniz. Seçtiğiniz çalışma alanlarını ayrı ayrı şifreleyebilirsiniz. Şu yöntemi takip edin:
Şifreleyeceğiniz ilk sütunu seçin Koruma>Kullanıcıların Aralıkları Düzenlemesine İzin Ver seçeneğini açın çıkan ekranda girmek istediğiniz parola sorulacaktır. Parolayı girin ve tamama tıklatın. Aynı işlemi diğer sütunlar için de yapın. Sonrasında Sayfayı korumaya alın.
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Merhabalar,

Destek için öncelikle çok teşekkür ederim. Ancak kodu çalıştırmak istediğimde "Compile Error. Invalid Outside procedure" şeklinde hatayı verdi.

Ayrıca şöyle bir ihtiyaç oldu. Dosyada 3 ayrı hakka sahip kullanıcı olacak.

1. grup kullanıcı :B ve C dışındaki tüm sutunları herkes görecek.
2. Grup kullanıcı :B'yi ve C'yi ben göreceğim. Yani tüm excel dosyasındaki sutunları.
3. Grup kullanıcı :1. grup'la birlikte Muhasebeci arkadaş B'yi görmeyecek sadece C 'yi görecek.Şifre ile

iyi çalışmalar
Ali Tursun
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Selamlar,
Şifrelemeyi makro kullanmadan da yapabilirsiniz. Seçtiğiniz çalışma alanlarını ayrı ayrı şifreleyebilirsiniz. Şu yöntemi takip edin:
Şifreleyeceğiniz ilk sütunu seçin Koruma>Kullanıcıların Aralıkları Düzenlemesine İzin Ver seçeneğini açın çıkan ekranda girmek istediğiniz parola sorulacaktır. Parolayı girin ve tamama tıklatın. Aynı işlemi diğer sütunlar için de yapın. Sonrasında Sayfayı korumaya alın.
Merhaba leumruk,

Bende İngilizce office 2016 var. Dediğinizi yaptım ancak olmadı. Koruma diye bir yer yok. Benzer yer review >> Allow user to Edit Ranges var.girdim. Akabinde review >> Protect and share workbook var. Ona girip şifre verdim. Ancak sonuç olumsuz.

İngilizce menuye göre dogrumu yaptım. Emin değilim.

İngilizce menu'ye göre proseduru yazabilirmisiniz

iyi çalışmalar
Ali
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
aralık.JPG
Resme göre hareket edebilirsiniz.
"Kullanıcıların Aralıkları Düzenlemesine İzin Ver" sekmesini seçtiğinizde karşınıza aralık tanımlamanız için bir ekran çıkacak. Bu ekranda "yeni" düğmesini tıklayarak şifrelemek istediğiniz aralıkları belirleyebilirsiniz.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Gizli kısmını gözden kaçırmışım. Bu durumda makro kullanmanız gerekecek. Fikir vermesi açısından son isteğinize göre bir örnek hazırladım. 1. grup için herhangi bir şifre belirlemedim, çünkü b ve c sütunu onlar için gizli olacak.
Kod:
Sub Makro1()
b = "2345"
c = "3456"
Columns("b:c").EntireColumn.Hidden = True
sor = InputBox("Şifre giriniz...", "UYARI")
If sor = b Then
Columns("b:c").EntireColumn.Hidden = False
ElseIf sor = c Then
Columns("c:c").EntireColumn.Hidden = False
Else
MsgBox "Hatalı şifre girdiniz.", vbCritical, "UYARI"
End If
End Sub
Alternatif Link: https://drive.google.com/open?id=1FX6ldw1b0hPx1I9RKmJMp8_1drrn8N-q
 

Ekli dosyalar

Son düzenleme:
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Selamlar,
Gizli kısmını gözden kaçırmışım. Bu durumda makro kullanmanız gerekecek. Fikir vermesi açısından son isteğinize göre bir örnek hazırladım. 1. grup için herhangi bir şifre belirlemedim, çünkü b ve c sütunu onlar için gizli olacak.
Kod:
Sub Makro1()
b = "2345"
c = "3456"
Columns("b:c").EntireColumn.Hidden = True
sor = InputBox("Şifre giriniz...", "UYARI")
If sor = b Then
Columns("b:c").EntireColumn.Hidden = False
ElseIf sor = c Then
Columns("c:c").EntireColumn.Hidden = False
Else
MsgBox "Hatalı şifre girdiniz.", vbCritical, "UYARI"
End If
End Sub
Alternatif Link: https://drive.google.com/open?id=1FX6ldw1b0hPx1I9RKmJMp8_1drrn8N-q
Merhaba leumruk,

Eline sağlık . Başarılı şekilde çalışıyor.
Ancak şöyle bir şey tespit ettim. Kullanıcı gizli sutunları fark edip öncesi ve sonrasındaki sutunları seçip sağ tuşa basıp göster dediğinde şifre sormadan açılıyor. Bunu nasıl hallederim ?
Gönderdiğin code'u bir tane butona'a assign ettim. O şekilde de çalışıyor.Ancak Kullanıcının Macro'ya girip şifreyi görmesini nasıl engellerim ?

iyi çalışmalar
Ali
 
Son düzenleme:

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Örneği inceleyiniz:
Kullanıcıların dosyanıza müdahale etmelerini engellemek için sayfayı korumaya almalısınız. Bu durumda düzenleme yapmaları da mümkün olmayacaktır. Bunu aşmak için sayfayı korumaya almadan önce tüm hücreleri seçip "Hücre Biçimlendir" menüsünde bulunan "Koruma" seçeneğindeki "Kilitli" kutucuğundaki tiki kaldırın. Eklediğim örnekte koruma şifresi "12345"... Tabi sayfayı korumaya alınca kodların çalışabilmesi için kodların başına sayfa korumasını kaldırmaya yarayan, sonrasında da tekrar korumaya alan birer satır ekledim. Bu önemli bir ayrıntı... Buna dikkat ediniz.
Makro kodlarının görünmesini engellemek için de "Visual Basic Düzenleyicisini" korumaya almalısınız. Bunun için şu yolu takip edin: "Visual Basic Düzenleyicisini" açın. Sonrasonda Tools>VBA Project Properties>Protection sekmesinden unutmayacağınız bir şifre giriniz.
Kod:
Sub Makro1()
b = "2345"
c = "3456"
On Error GoTo Son
ActiveSheet.Unprotect "12345"
Columns("b:c").EntireColumn.Hidden = True
Sor = InputBox("Şifre giriniz...", "UYARI")
If Sor = "" Then GoTo Son
If Sor = b Then
Columns("b:c").EntireColumn.Hidden = False
ElseIf Sor = c Then
Columns("c:c").EntireColumn.Hidden = False
Else
MsgBox "Hatalı şifre girdiniz.", vbCritical, "UYARI"
End If
Son:
ActiveSheet.Protect "12345"
End Sub
Örnek dosya: https://drive.google.com/file/d/1LZ1raRnunkAg4AzhhcnmSpd_dL4VRwp2/view?usp=sharing
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Selamlar,
Örneği inceleyiniz:
Kullanıcıların dosyanıza müdahale etmelerini engellemek için sayfayı korumaya almalısınız. Bu durumda düzenleme yapmaları da mümkün olmayacaktır. Bunu aşmak için sayfayı korumaya almadan önce tüm hücreleri seçip "Hücre Biçimlendir" menüsünde bulunan "Koruma" seçeneğindeki "Kilitli" kutucuğundaki tiki kaldırın. Eklediğim örnekte koruma şifresi "12345"... Tabi sayfayı korumaya alınca kodların çalışabilmesi için kodların başına sayfa korumasını kaldırmaya yarayan, sonrasında da tekrar korumaya alan birer satır ekledim. Bu önemli bir ayrıntı... Buna dikkat ediniz.
Makro kodlarının görünmesini engellemek için de "Visual Basic Düzenleyicisini" korumaya almalısınız. Bunun için şu yolu takip edin: "Visual Basic Düzenleyicisini" açın. Sonrasonda Tools>VBA Project Properties>Protection sekmesinden unutmayacağınız bir şifre giriniz.
Kod:
Sub Makro1()
b = "2345"
c = "3456"
On Error GoTo Son
ActiveSheet.Unprotect "12345"
Columns("b:c").EntireColumn.Hidden = True
Sor = InputBox("Şifre giriniz...", "UYARI")
If Sor = "" Then GoTo Son
If Sor = b Then
Columns("b:c").EntireColumn.Hidden = False
ElseIf Sor = c Then
Columns("c:c").EntireColumn.Hidden = False
Else
MsgBox "Hatalı şifre girdiniz.", vbCritical, "UYARI"
End If
Son:
ActiveSheet.Protect "12345"
End Sub
Örnek dosya: https://drive.google.com/file/d/1LZ1raRnunkAg4AzhhcnmSpd_dL4VRwp2/view?usp=sharing

Merhaba leumruk,

Dediğiniz gibi koruma yaptım. Artık istemediğim kullanıcılar göremiyorlar. Ancak o zamanda oluşturduğum buton'a klikleyemiyorum.
Sizin yaptığınız excel'de ise dogru şekilde çalışıyor. Acaba nerede hata yapmış olabilirim.

iyi çalışmalar

Ali
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Dosyayı görmeden kesin bir şey söyleyemem. Benim eklediğim dosyadaki butonu kopyalayıp kendi dosyanıza yapıştırın ve makroyu bu butona atayın. Aynı durum söz konusu olacak mı denemiş oluruz. Ya da dosyanızın içindeki bilgileri silip ekleyin. Sorunu dosyanız üzerinde anlamaya çalışalım.
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Merhaba,
Dosyayı görmeden kesin bir şey söyleyemem. Benim eklediğim dosyadaki butonu kopyalayıp kendi dosyanıza yapıştırın ve makroyu bu butona atayın. Aynı durum söz konusu olacak mı denemiş oluruz. Ya da dosyanızın içindeki bilgileri silip ekleyin. Sorunu dosyanız üzerinde anlamaya çalışalım.
Merhaba leumruk,

Test dosyamı google drive'ye yükledim. Sizin butonu kopyalamaya izin vermiyor. Sadece çalıştırabiliyorum

https://drive.google.com/file/d/1GfcwOdRJtjgphHz5-pVP7eKhu2q171pU/view?usp=sharing
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Dosyaya erişim iznini kapatmışsınız sanırım. Dosyayı indiremiyorum.
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Merhaba,
Dosyaya erişim iznini kapatmışsınız sanırım. Dosyayı indiremiyorum.
Tekrar aşağıdaki linki denermisiniz ? Bu arada sizin button'u kopyalayınca benim dosya'da da çalıştı.
Ama sebebini anlamadım. Onu anlamaık istedim. Aradaki 9 fark ne acaba :)
Macroyu aynı dosyanın içinde saklıyor değil mi ?. Çünkü bu işlemi yaklaşık 100 tane dosya'da yapacağım. Aynı mantıkta olacak.

https://drive.google.com/open?id=1GfcwOdRJtjgphHz5-pVP7eKhu2q171pU
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Eklediğiniz dosyadaki butona makro atadım ve çalıştırdım. Korumalı sayfada da çalıştı. Bir yerlerde yanlış yapıyor olmalısınız.
Benim eklediğim dosyadaki butonu kopyaladığınızda açık dosyadaki makroyu çalıştıracaktır. Eklediğiniz dosyada çalışması normal, çünkü kodlar aktif sayfada çalışacak şekilde hazırlandı. Ancak benim dosyamı kapattığınızda makronun çalışmadığını göreceksiniz. Dolayısıyla her dosya için makroyu ayrıca kopyalamanız gerekli ve sonrasında kopyaladığınız butona yeniden aktif dosyanızdaki makroyu atamalısınız.
 
Katılım
26 Ocak 2018
Mesajlar
12
Excel Vers. ve Dili
excel 2016
Eklediğiniz dosyadaki butona makro atadım ve çalıştırdım. Korumalı sayfada da çalıştı. Bir yerlerde yanlış yapıyor olmalısınız.
Benim eklediğim dosyadaki butonu kopyaladığınızda açık dosyadaki makroyu çalıştıracaktır. Eklediğiniz dosyada çalışması normal, çünkü kodlar aktif sayfada çalışacak şekilde hazırlandı. Ancak benim dosyamı kapattığınızda makronun çalışmadığını göreceksiniz. Dolayısıyla her dosya için makroyu ayrıca kopyalamanız gerekli ve sonrasında kopyaladığınız butona yeniden aktif dosyanızdaki makroyu atamalısınız.

Merhaba leumruk,

Bayram seyran demeden , gece gündüz demeden verdiğin destek için çok teşekkür ederim. Nokta atışlarında süper yardımcı oldun. Çok teşekkür ederim.
işimi çok kolaylaştırdın. Süpersin.

Ayrıca rabbace ve Omer Baran sizlere de teşekkür ederim.

iyi çalışmalar

Ali Tursun
 
Üst