Çözüldü Çalışma kitabını makroyla şifreleme

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Selamlar

Bir excel dosyamızı şifrelemek istediğimizde, Dosya sekmesindeki,
“Çalışma Kitabını Koru”
“Parola ile Şifrele” yi tıklayarak parolamızı girer ve şifreleriz. Veya Farklı Kaydet esnasında şifreleyebiliriz.

Örnek olarak kullandığımız parola 123 olsun. Dosya şifrelemeyi makro ile yapmak istiyorum.Şifrelenmemiş bir dosyayı makro ile şifreleyeceğim. Mesela dosyadan çıkarken olabilir. (Workbook Before Close)
En sade haliyle kodlarını rica ederim.
Alternatif kodlar da olursa denemek isterim.
Teşekkür ederim.
 
Çözüm
Application.DisplayAlerts = False satırı ile Excel'e ait olan mesaj bilgilerini kapattığımız için, dosya kapanırken çıkacak mesajı biz belirleyebiliriz.

8 numaralı mesajda paylaştığım kodu aşağıdaki şekilde değiştiriniz.
PHP:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol seçeneklerinden birini kullanın.

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Merhabalar Sn. hakki83

ActiveWorkbook.SaveAs yazıp bir boşluk bıraktığınız zaman, farklı kaydet işlemi için kullanılacak özellikler açılır.
1632896528110.png
-- Bu özellikler içinde Password kısmına yazacağınız şifre, dosya açılışında sorulacak şifredir.
-- Kullandığınız, Farklı kaydet koduna Password:=123 şeklinde ekleme yapmanız yeterlidir.
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Sub deneme()
ActiveWorkbook.SaveAs
Password:=123
End Sub

yazdım, Password kısmı kırmızı oldu. Yani olmadı. Yanlış yaptım sanıyorum.
 

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
ActiveWorkbook.SaveAs kodu tek satırda, virgül ile ayrılarak yazılmalı. Kod uzun olduğu için alt satıra geçmek isterseniz alt tire ( _ ) kullanmalısınız.
-- Ayrıca Filename özelliği boş olmamalı, burada dosyanın kayıt edileceği yer ve dosya adı belirtilmelidir.

Örnek farklı kaydet satırı,
-- Bu satırdaki D:\KullanıcıDosyaları\İndirilenDosyalar\Kitap1.xlsm kısmını dosyaları kayıt edeceğiniz konuma göre değiştiriniz.
PHP:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol seçeneklerinden birini kullanın.

Aynı kodun alt tire ile birden fazla satıra yazılmış hali
PHP:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol seçeneklerinden birini kullanın.
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Denemeler yapmaya başlayacağım. (An itibariyle Henüz denemelere başlamadım)

Sorularım olacak. Ama ilk sorumu hemen sorayım.

Dosyanın kendisini, kendi adıyla, ve konum belirtmeden; ve çıkışta karşımıza sorular çıkmadan, şifreli hale getirmenin çözümü var mıdır?

Ben şöyle düşünmüştüm.
Dosya açıkken (ve henüz şifreli değilken), dosyamı kapatma esnasında, şifreli hale getirip kapatacak, ve şifreli olacak.

Hatta gözünüzde canlandırmanız açısından daha açık ve net tarif edeyim.

İki amaçla kullanacağım.

1)
Dosyamı açılmış olarak birine verdim. Geldi bilgisayara oturdu. Henüz Şifreli değil. Şifre kodlarda kurulu. Bu kişi yazdı çizdi işini bitirdi. Dosyayı kapattı.
İşte kapattığı an şifrelenecek.

Kapanırken; şifre, dosya kayıt yeri vs sormayacak. Dosyanın kendisi şifrelenecek. Sadece şunu sorabilir: “Yaptığınız değişiklikleri kaydetmek istiyor musunuz?

2)
Belli süre geldiği zaman makroların çalışmasını sağlayan kodların içine, oluşturacağınız kodu yerleştireceğim. Dolayısı ile bir günlüğüne dosyayı verdiğim bir kişi, ancak bir gün dosyaya yazıp çizebilecek .

Birazdan verdiğiniz kodlarla ilgili denemeler yapmaya başlayacağım.
 
Son düzenleme:

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
5 nolu mesajda verdiğiniz kodu denedim. Bahsettiğiniz şekilde çalışıyor, ama maalesef benim düşündüğüm, olmasını istediğim gibi olmadı.
 

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Aktif kullandığınız dosyanın Thisworkbook (buçalışmakitabı) bölümüne aşağıdaki kodları ekleyiniz.

*** Uyarı vermeden aynı dosyanın üzerine kayıt eder.

PHP:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol seçeneklerinden birini kullanın.
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Gayet güzel, son bir husus kaldı;

Dosyada yapılan değişikliği (bildiğimiz şekliyle) uyarı vererek sorsa, ve biz “Kaydet” e bastıktan sonra şifreleme özelliği devreye girse, bunun için hangi satırı silmeliyiz veya eklemeliyiz?

(Yani eğer mümkünü varsa çıkışta değişikliği kaydetmeyi sorma özelliği, pasif olmasın)

(Belirtmeliyim Sn AhmetRasim hocam, bu şekilde de işimi görür)
Ama eğer oluyorsa, denemek isterim.
 
Moderatörün son düzenlenenleri:

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Application.DisplayAlerts = False satırı ile Excel'e ait olan mesaj bilgilerini kapattığımız için, dosya kapanırken çıkacak mesajı biz belirleyebiliriz.

8 numaralı mesajda paylaştığım kodu aşağıdaki şekilde değiştiriniz.
PHP:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol seçeneklerinden birini kullanın.
 
Son düzenleme:
Çözüm

Ömer BARAN 

Kurucu
Yönetici
Kurucu
Doğrulanmış
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Sayın AhmetRasim 'in müsaadeleriyle, bir hususu hatırlatmak isterim.
O da Application.Quit kod satırıyla ilgilidir.

Şayet sadece kodların kullanıldığı excel belgesi açıksa mesele yok.
Ancak, aynı anda 1'den fazla excel belgesi açıksa, bu kod satırı sıkıntılı.
Çünkü belgeyi değil Excel uygulamasını kapatma komutu verilmiş oluyor.

O satırı; açık belge sayısı 1 ise (kodun kullanıldığı belge demektir) mevcut QUIT kodu,
açık belge sayısı 1'den büyükse de sadece aktif belgeye yönelik CLOSE kodu
şeklinde düzenlemekte yarar var bence.

.
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Sayın AhmetRasim 'in müsaadeleriyle, bir hususu hatırlatmak isterim.
O da Application.Quit kod satırıyla ilgilidir.

Şayet sadece kodların kullanıldığı excel belgesi açıksa mesele yok.
Ancak, aynı anda 1'den fazla excel belgesi açıksa, bu kod satırı sıkıntılı.
Çünkü belgeyi değil Excel uygulamasını kapatma komutu verilmiş oluyor.

O satırı; açık belge sayısı 1 ise (kodun kullanıldığı belge demektir) mevcut QUIT kodu,
açık belge sayısı 1'den büyükse de sadece aktif belgeye yönelik CLOSE kodu
şeklinde düzenlemekte yarar var bence.

.
Sayın hocam kod olarak yazar mısınız?
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Sn AhmetRasim hocam merhaba

10 nolu mesajınızdaki önceki kod da, sonradan güncellediğiniz son kod da çalışıyor sorun yok. Fakat Call ile çağırmak istediğimde sonraki koddaki
Public kontrol As Byte
satırı hata veriyor. Bu satırı etkisizleştirince hiç sorun yok.

Sorum şu: Bu satırı kullanmasak bir şey olur mu?


(Ben aslında Private başlığının üstünde Public satırını ilk gördüğümde Call ile hata vereceğini tahmin etmiştim, ama önce denemeler yapayım, hata verirse ondan sonra sorarım diye düşünmüştüm)
 

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Merhabalar Sn. hakki83

Kod çağırma işlemi yapacağınızı belirtmemiştiniz.
İlk mesajınızda Workbook_BeforeClose için olabilir dediğinizden dolayı verdiğim örnek kodlarda bu yönde oldu.

--Kod çağırma için Uygulama yaptığınız dosya ve kodları paylaşır mısınız?
 

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
AhmetRasim hocam dosyaları hazırladım.
Call satırını siz açtığınızda devreye girmesin diye pasif yaptım. Boş kalmasın diye geçici olarak Msgbox koydum.
Bir de kodlardaki msgbox satırında küçük bir değişiklik yaptım, böyle biraz daha gerçeğe yakın oldu.
Örnekler ektedir.
 

Ekli dosyalar

  • 10. msj kod1.xlsm
    13.3 KB · Görüntüleme: 1
  • 10. msj kod2.xlsm
    13.6 KB · Görüntüleme: 2

AhmetRasim

Forum Yönetimi
Yönetici
Site Yöneticisi
Versiyon
  1. Excel 2019
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Merhabalar Sn. hakki83

-- Public ile başlayan satırlar Kod Sayfasının ilk sırasında yani en üstte bulunmalıdır.
1632993641549.png

Public kontrol As Byte satırını kod2 bloğu içerisine yazdığınız için hata verir.

Bu satırı kullanmasak bir şey olur mu?
Sorunuzun cevabı ise;
-- Eğer kapatma kodlarını Workbook_BeforeClose ile kullanacaksanız bu satırlar gerekli.
-- Ama modül içerisinde başka bir kod bloğuda çalıştıracaksanız, kontrol kelimesi geçen satırları kullanmanıza gerek yok.
 

Ekli dosyalar

  • 1632993596657.png
    1632993596657.png
    4.5 KB · Görüntüleme: 3

hakki83

VIP
VIP
Kullanıcı
Versiyon
  1. Excel 2016
Sürüm
  1. 32 bit
Dil
  1. Türkçe
Sayın AhmetRasim 'in müsaadeleriyle, bir hususu hatırlatmak isterim.
O da Application.Quit kod satırıyla ilgilidir.

Şayet sadece kodların kullanıldığı excel belgesi açıksa mesele yok.
Ancak, aynı anda 'den fazla excel belgesi açıksa, bu kod satırı sıkıntılı.
Çünkü belgeyi değil Excel uygulamasını kapatma komutu verilmiş oluyor.

O satırı; açık belge sayısı 1 ise (kodun kullanıldığı belge demektir) mevcut QUIT kodu,
açık belge sayısı 1'den büyükse de sadece aktif belgeye yönelik CLOSE kodu
şeklinde düzenlemekte yarar var bence.

.
Ömer Baran hocam öğrenebilmek için soruyorum; önceki kodlarda birden fazla açık excel belgesi varsa sıkıntı oluşturabileceğinden bahsetmiştiniz. Önceki kodlarda birden fazla açık belge olunca, kodlar içinde bulunduğu sayfayı şifrelemiyor mu? Yani kodlar yanlış mı çalışmış oluyor?
 
Üst Alt