Excel VBA: Jak na vymazání modulu z jiného sešitu
Ahoj ve spolek, mám tu takovej špek a už mi dochází nápady a hlavně trpělivost.
Mám sešit "faktura", který obsahuje toto makro pro uložení kopie do stanovené složky
Private Sub uloz()
Dim newFile As String, fName As String
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
On Error Resume Next
MkDir ("E:\Faktury")
MkDir ("E:\Faktury\Fakturace")
On Error GoTo 0
'*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
'nastavení cesty pro uložení na disk E v Module2
Dim ThisBook As Workbook, WkSht As Worksheet
Set ThisBook = ThisWorkbook
fName = CestaProUlozeni & Range("V7").Value
newFile = fName
ActiveWorkbook.SaveCopyAs Filename:=newFile & ".xls"
Application.Workbooks.Open (newFile & ".xls")
For Each WkSht In ActiveWorkbook.Worksheets
Select Case WkSht.Name
'***************************************
'Listy, které mají být vyloučeny (přejmenovat podle potřeby)
Case "Zákazníci"
'***************************************
Application.DisplayAlerts = False
WkSht.Delete
Application.DisplayAlerts = True
Case Else
'do nothing
End Select
Application.CutCopyMode = False
Next WkSht
ActiveWorkbook.Save
ActiveWorkbook.Close
ActiveWorkbook.Save
End Sub
Funguje to tak, že po stisku tlačítka se uloží kopie sešitu do stanovené složky, tento nově vytvořený sešit (např: 20110011 franta novák.xls) se otevře a makro z něj odstraní list zákazníci, uloží změnu a sešit ukonči a uloží změny v sešitě faktura.
A já bych rád aby při odstranění listu zákazníci ze sešitu (20110011 franta novák.xls), zároveň došlo i k odstranění modulu konkrétně module1.
pro odstranění modulu mám tento kód:
Sub odstranit_modul()
Dim vbCom As Object
Set vbCom = Application.VBE.ActiveVBProject.VBComponents
vbCom.Remove VBComponent:= vbCom.Item("Module1")
End Sub
Bohužel se mi nedaří tyto dva kódy spojit dohromady aby fungovaly podle představ. Buď nedojde k odstranění modulu nebo se naopak odstraní ze zdrojového sešitu "faktura", což je nežádoucí.
Máte někdo potuchy jak na to?
Děkuji
Tak se mi tento problém podařilo vyřešit oklikou přes vložení kódu do Workbook_Open a sadu podmínek. Bohužel mi tu nastal další zádrhel (se kterým sem počítal). Ve Workbook_Open mám ještě volání makra (Call kontrola), které bylo právě v tom mazaném modulu. Po jeho odstranění vybíhá hláška Compile error: Sub or Function not defined.
Moje chybná domněnka byla že využiju On Error Resume Next, což se ukázalo jako nefunkční. Věděl by někdo jak na tento "zádrhel"?
Namiesto:
Použi (so správnym názvom modulu):
Potom budeš môcť použiť On Error.
Díky to je přesně ono.
Jak jednoduché