Pisanie kodu kodem - nadpisywanie kodu makra
Poniższy przykład pokazuje jak za pomocą kodu VBA można napisać ... kod VBA. Procedura usuwa z zeszytu test.xls (zakłądm, że jest on otwarty) z Module1 cały tekst (o ile istnieje) i wpisuje nowy:
Sub wstaw_kod()
Dim wb As Workbook
Set wb = Workbooks("test.xls")
Set vbp = wb.VBProject
Set m = vbp.VBComponents("Module1")
'usuwa dotychczasowy tekst makra
On Error Resume Next
usun = m.CodeModule.DeleteLines(1, m.CodeModule.CountOfLines)
'pisze kod
code = "Sub makro()" & vbCr
code = code & "MsgBox (thisworkbook.name & "" - to działa!"")" & vbCr
code = code & "End Sub"
'wstawia kod do Module1
With vbp. _
VBComponents("Module1").CodeModule
nextline = .CountOfLines + 1
.InsertLines nextline, code
End With
End Sub
Konieczne jest włączenie dostępu do projektu VB: menu excela narzędzia/makra/bezpieczeństwo/zaufane źródła, zaznaczyć 'ufaj dostęowi do projektu VB' (tłumaczenie własne).
Procedurę można wykorzystać np. do uaktualnienia kodów makr w zeszytach do których nie mamy bezpośredniego dostępu, prosząc ich operatorów o uruchomienie zeszytu z 'aktualizatorem makr'.
Porównaj przypisaniezdarzeniakontrolce.htm