vba penceresini kod ile şifreleme

msdemr

Altın Üye
Katılım
24 Ekim 2022
Mesajlar
18
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-11-2024
Merhaba python ile bir kod yazdım. bir xlsx dosyası üzerinde bir dizi işlem yapıp, hazırladığım bir vba kodu ekleyip .xlsm olarak masaüstüme kaydediyor (burası önemli değil bilgi amaçlı). Fakat ben bu excel açıldığında içinde çalışan makroları kimse görmesin istiyorum. Dolayısıyla bana workbook açıldığında vba penceresine önceden belirlediğim bir şifre ile kilitleyen bir kod lazım. Normalde vba penceresinin nasıl şifreleneceğini biliyorum ama excel sayısı çok tek tek yapmam mümkün değil. Dolayısıyla bu kodu hazırlayabilirsem python kodunun içine gömeceğim ve çıktı verdiği her excel açıldğında vba penceresi otomatik kilitlenmiş olacak. Yardımlarınızı bekliyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu da alternatif olsun..

C++:
Sub Folder_File_Protect()
    Dim Fso As Object
    Dim File_Path As String
    Dim My_File As Object
    Dim Pwd As String
  
    ' Klasör yolunu belirtin
    File_Path = "C:\Your\Folder\Path\"
  
    ' Şifre girme penceresi gösterin
    Pwd = InputBox("Lütfen bir şifre girin:", "Klasördeki Dosyaları Şifreleme")
    If Pwd = "" Then
        MsgBox "Şifre girmediniz.", vbCritical
        Exit Sub
    End If
  
    Set Fso = CreateObject("Scripting.FileSystemObject")
  
    ' Klasördeki tüm dosyaları döngüye alın
    For Each My_File In Fso.GetFolder(File_Path).Files
        ' Sadece Excel dosyalarını işleme alın
        If InStr(My_File.Name, ".xlsx") > 0 Or InStr(My_File.Name, ".xlsm") > 0 Then
            ' Excel dosyasını açın
            Workbooks.Open My_File.Path
            ' VBA projesini şifreleyin
            ActiveWorkbook.VBProject.Protect Password:=Pwd
            ' Excel dosyasını kaydedin ve kapatın
            ActiveWorkbook.Save
            ActiveWorkbook.Close
        End If
    Next My_File
  
    MsgBox "Klasördeki tüm excel dosyaları başarıyla şifrelendi.", vbInformation
End Sub
 

msdemr

Altın Üye
Katılım
24 Ekim 2022
Mesajlar
18
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-11-2024
Bu da alternatif olsun..

C++:
Sub Folder_File_Protect()
    Dim Fso As Object
    Dim File_Path As String
    Dim My_File As Object
    Dim Pwd As String
   
    ' Klasör yolunu belirtin
    File_Path = "C:\Your\Folder\Path\"
   
    ' Şifre girme penceresi gösterin
    Pwd = InputBox("Lütfen bir şifre girin:", "Klasördeki Dosyaları Şifreleme")
    If Pwd = "" Then
        MsgBox "Şifre girmediniz.", vbCritical
        Exit Sub
    End If
   
    Set Fso = CreateObject("Scripting.FileSystemObject")
   
    ' Klasördeki tüm dosyaları döngüye alın
    For Each My_File In Fso.GetFolder(File_Path).Files
        ' Sadece Excel dosyalarını işleme alın
        If InStr(My_File.Name, ".xlsx") > 0 Or InStr(My_File.Name, ".xlsm") > 0 Then
            ' Excel dosyasını açın
            Workbooks.Open My_File.Path
            ' VBA projesini şifreleyin
            ThisWorkbook.VBProject.Protect Password:=Pwd
            ' Excel dosyasını kaydedin ve kapatın
            ActiveWorkbook.Save
            ActiveWorkbook.Close
        End If
    Next file
   
    MsgBox "Klasördeki tüm excel dosyaları başarıyla şifrelendi.", vbInformation
End Sub
Bu kod işime baya yarar. fakat ilk aşağıdaki görseldeki hatayı aldım. ve "File" ibaresini "My_File" olarak değiştirince düzeldi.
250527

Sonrasında çalıştı ve password yazmam istenilen ekran geldi. şifreyi girdim. ve kod çalıştı gitti belirtilen klasördeki ilk exceli açtı ve aşağıdaki hatayı verdi. Nasıl ilerleyebilirim?

250528
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodda bazı düzenlemeler yaptım. Tekrar deneyiniz..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben denemedim.. :)
 
Üst