re-creating vbcomponent

  • Thread starter Thread starter JYH
  • Start date Start date
J

JYH

I am trying to create a UserForm X. If, for whatever reason, form X
already exist, I want to remove it and re-create it again.

Sounds simple, right?

Here's the code:
Dim TempForm As Object ' VBComponent
On Error Resume Next
Set TempForm = ThisWorkbook.VBProject.VBComponents("Bob")
ThisWorkbook.VBProject.VBComponents.Remove TempForm
On Error GoTo 0
'Set TempForm = Nothing
Set TempForm =
ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
ThisWorkbook.VBProject.VBComponents(TempForm.name).name = "Bob"

Last line gives me a "Run time error 75: path file access error"...

Any suggestion?

And, before you ask, even god have less privilege than me on that
machine...
 
It seems that VB considers component Bob to exist even after removed. An
intermediate save fixed that for me in Excel 2010:

Sub a()
Dim TempForm As Object ' VBComponent
On Error Resume Next
Set TempForm = ThisWorkbook.VBProject.VBComponents("Bob")
ThisWorkbook.VBProject.VBComponents.Remove TempForm
On Error GoTo 0
ThisWorkbook.Save
ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name = "Bob"
End Sub

Jim
 
Thank you but I would prefer not to save someone else's workbook. (I
realised I meant ACTIVEWORKBOOK and <U>not</U> THISWORKBOOK.)

However you seem to have pointed something there: Since it is
understandable that you can not re-use a component until its
eradication have been confirm by a save, my best solution may be to
use it and delete its content. But then, not only would I make it
harder to clean (each and every component) but also would most likely
get the same problem when I will try to re-add the same controls...
( A textbox name X on a form Y could not be re-created under the same
name after being suppressed once from that same form...)
 
Back
Top