Exportera och importera VBA-moduler
Här demonstreras tekniker för att exportera och importera moduler från / till arbetsböcker.
Export- och importprocedurerna nedan motsvaras av de manuella kommandona:
- Markera en modul.
- Högerklicka.
- Välj exportera eller importera fil från menyn.
Undvik i möjligaste mån att tilldela modulerna filändelsen "bas" vid export. De flesta anti-virusprogram har en tendens till att vid import uppfatta dessa som virusfiler och låser helt sonikt arbetsboken där koden körs från.De filer som skapas vid export och som används vid import är textfiler varför vid t ex export/import av arbetsbladmodul så är det endast modulen och dess innehåll som exporteras/importeras och inte arbetsbladet i sig.
Glöm inte av att ange en referens "Microsoft Visual Basic for Applications Extensibility 5.3".
Exemplena finns ej att tillgå för hämtning.
Export av klass-, standardmodul och formulärVid export finns den aktuella modulen kvar i VBA-projektet.
Sub Exportera_Standardmodul()
'© 2002 Alla rättigheter XL-Dennis
Dim vbaProjekt As VBIDE.VBProject
Dim vbaModul As VBIDE.VBComponent
Set vbaProjekt = ThisWorkbook.VBProject
'För klass-, standardmoduler och formulär används denna tilldelning.
Set vbaModul = vbaProjekt.VBComponents("Modul2")
'Modulen exporteras här och tilldelas ett annat namn.
vbaModul.Export ("c:\Test.txt")
End Sub
Export av arbetsbladmoduler
Varje arbetsbladmodul har ett unikt kodnamn (CodeName) och detta används vid export av arbetsbladmoduler enligt följande:
Sub Exportera_Arbetsbladmodul()
'© 2002 Alla rättigheter XL-Dennis
Dim vbaModul As VBIDE.VBComponent
'För arbetsblad, diagramblad och klassmoduler används denna tilldelning .
With ThisWorkbook
Set vbaModul = .VBProject.VBComponents(.Worksheets("Blad1").CodeName)
End With
'Modulen exporteras här och tilldelas ett annat namn.
vbaModul.Export ("c:\Test.txt")
End Sub
Export av arbetsbokmodul
Här använder vi oss av arbetsbokmodulens kodnamn.
Sub Exportera_Arbetsbokmodul()
'© 2002 Alla rättigheter XL-Dennis
Dim vbaModul As VBIDE.VBComponent
'För arbetsbokmoduler används denna tilldelning
With ThisWorkbook
Set vbaModul = .VBProject.VBComponents(.CodeName)
End With
'Modulen exporteras här och tilldelas ett annat namn.
vbaModul.Export ("c:\Test.txt")
End Sub
Exportera alla moduler
Slutligen visas här hur vi kan exportera samtliga moduler i ett VBA-projekt.
Sub Exportera_Alla_moduler()
'© 2002 Alla rättigheter XL-Dennis
Dim vbaModuler As VBIDE.VBComponents
Dim vbaModul As VBIDE.VBComponent
Set vbaModuler = ThisWorkbook.VBProject.VBComponents
For Each vbaModul In vbaModuler
vbaModul.Export ("c:\backup\" & vbaModul.Name & ".txt")
Next vbaModul
End Sub
Import av moduler
Att importera moduler av typerna standard, diagram, formulär, arbetsblad och klass är enkelt och proceduren nedan visar hur det sker.
Import av arbetsbokmodul och arbetsbladmoduler fungerar visserligen men de ersätter inte de nuvarande modulerna utan läggs till VBA-projektet som klassmoduler.
Vill vi "ersätta" dessa moduler får det ske genom att först ta bort all kod i de existerande modulerna och därefter skriva in den nya koden.
Sub Importera_Standardmodul()
'© 2002 Alla rättigheter XL-Dennis
Dim vbaProjekt As VBIDE.VBProject
Dim stSokvagFil As String
Set vbaProjekt = ThisWorkbook.VBProject
stSokvagFil = "c:\Test.txt"
vbaProjekt.VBComponents.Import (stSokvagFil)
End Sub