1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| Sub Macro1()
Dim Fichier As String, Chemin As String
Dim WB As Workbook
Dim wbExcel As Workbook
'Définit le répertoire contenant les fichiers
Chemin = "C:\Users\bas\Desktop\TESTS\onglet\"
Fichier = Dir(Chemin & "*.xlsm")
' Permet de masquer les fenetres d'alertes de liaison
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
'Boucle sur tous les fichiers xlsm du répertoire.
Do While Fichier <> ""
If Fichier <> ThisWorkbook.Name Then
Set WB = Workbooks.Open(Chemin & Fichier, UpdateLinks:=0)
' Copie de l'onglet info et enregistrement sur la feuille active
ThisWorkbook.Sheets("Info").Copy After:=WB.Sheets(WB.Sheets.Count)
ProtectVBProject WB, "hassan"
ActiveWorkbook.Save
' WB.Close
Application.ScreenUpdating = True
Set WB = Nothing
End If
Fichier = Dir
Loop
End Sub
Sub ProtectVBProject(WB1 As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB1.VBProject
If vbProj.Protection = 1 Then Exit Sub
' Active le fichier à protéger dans VBA
Set Application.VBE.ActiveVBProject = vbProj
' simule l'ouverture de la boite de dialogue "Propriétés de VBAProject", exactement comme si on allait dans le menu Outils/Propriétés de VBAProject...
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
' simule l'appui sur des touches (permettant de basculer sur l'onglet "Protection", cocher la case et écrire le mot de passe)
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~", True
WB1.Save
WB1.Close
End Sub |
Partager