[b][green]'REQUIRES: Microsoft Visual Basic For Applications Extensibility 5.3 (VBE6EXT.OLB)[/green][/b]
[navy]Sub [/navy] AddModule()
[b][green]'Change this to your workbook name and path[/green][/b]
Const cFileName = "[i]\AddModuleToExcel.xls[/i]"
[navy]Dim[/navy] objExcel [navy]As Object[/navy]
[navy]Dim[/navy] objWorkBook [navy]As Object[/navy]
[navy]Dim[/navy] vbComponent [navy]As[/navy] vbComponent
[navy]Dim[/navy] vbCodeModule [navy]As[/navy] CodeModule
[navy]Dim[/navy] blnSpawnedExcel [navy]As Boolean[/navy]
[green]'Use In-line Error handling For Object creation[/green]
On [navy]Error Resume Next[/navy]
[green]'Grab an existing Instance of Excel or create a new one[/green]
[navy]Set[/navy] objExcel = GetObject(, "Excel.Application")
[navy]If[/navy] Err.Number <> 0 [navy]Then[/navy]
[navy]Set[/navy] objExcel = CreateObject("Excel.Application")
blnSpawnedExcel = [navy]True[/navy]
Err.Clear
[navy]End If[/navy]
[green]'Switch To block Error handling[/green]
On [navy]Error Goto[/navy] Err_Handler
[green]'Open the target workbook **SEE NOTE ABOVE on [b]CurrentProject.Path[/b][/green]
[navy]Set[/navy] objWorkBook = objExcel.Workbooks.Open([i]CurrentProject.Path & cFileName[/i])
[green]'Get the target module and add some text[/green]
[navy]Set[/navy] vbCodeModule = objWorkBook.VBProject.VBComponents("Sheet1").CodeModule
vbCodeModule.AddFrom[navy]String[/navy] "'Test"
[green]'Create a new standard module and add some text[/green]
[navy]Set[/navy] vbComponent = objWorkBook.VBProject.VBComponents.Add(vbext_ct_StdModule)
[navy]Set[/navy] vbCodeModule = vbComponent.CodeModule
vbComponent.Name = "OLEAddedModule"
vbCodeModule.AddFrom[navy]String[/navy] "'Test"
[green]'Release all the Objects[/green]
Clean_up:
[navy]Set[/navy] vbCodeModule = [navy]Nothing[/navy]
[navy]Set[/navy] vbComponent = [navy]Nothing[/navy]
With objWorkBook
.Save
.Close
[navy]End[/navy] With
[navy]Set[/navy] objWorkBook = [navy]Nothing[/navy]
[navy]If[/navy] blnSpawnedExcel [navy]Then[/navy] objExcel.Quit
[navy]Set[/navy] objExcel = [navy]Nothing[/navy]
[navy]Exit Sub [/navy]
Err_Handler:
Debug.Print Err.Number, Err.Description
Stop
[navy]Resume[/navy] Clean_up
[navy]End Sub [/navy]