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
| Sub importe()
'Nécessite d'activer la référence "Microsoft Visual Basic for Applications Extensibility 5.3"
Dim Wb As Workbook
Dim oModule As CodeModule
Dim VbComp As VBComponent
Dim x As Integer
Dim Cible As String
Dim file As String
Dim i As Integer
For i = 2901 To 3999
file = Trim(Str(i))
Application.Workbooks.Open "D:\Dossier\" & file & ".xls"
Cible = "NomModule"
'Définit le classeur de destination (qui doit être préalablement ouvert).
Set Wb = Workbooks(file & ".xls")
'Charge le module dans le classeur
Set VbComp = Wb.VBProject.VBComponents.Import("D:\ThisWorkbook.cls")
'Le renomme (pour le supprimer plus facilement ultérieurement
VbComp.Name = Cible
Set oModule = VbComp.CodeModule
'Transfère les données chargées dans ThisWorkbook.
'Attention les données existantes dans "ThisWorkbook" sont écrasées.
With Wb.VBProject.VBComponents("ThisWorkbook").CodeModule
x = .CountOfLines
.DeleteLines 1, x
.InsertLines 1, oModule.Lines(1, oModule.CountOfLines)
End With
'Suppression du module précédemment chargé
With Wb.VBProject.VBComponents
.Remove .Item(Cible)
End With
Workbooks(file & ".xls").Save
Workbooks(file & ".xls").Close
Next i
End Sub |