ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Removing a module (https://www.excelbanter.com/excel-programming/372234-removing-module.html)

Candyman

Removing a module
 
Is there a difference in code going to Excel 2003?

I have the code to remove a module:

Private Sub RemoveModule(mName As String)
Dim objVBComp As VBComponent
If modExists(mName) = True Then
Set objVBComp = ThisWorkbook.VBProject.VBComponents(mName)
ThisWorkbook.VBProject.VBComponents.Remove objVBComp
End If
End Sub
'Before using these procedures, you'll need to set a reference in VBA to the
'VBA Extensibility library. In the VBA editor, go to the Tools menu, choose
'the References item, and put a check next to "Microsoft Visual Basic For
'Applications Extensibility" library.


Function modExists(modName As String) As Boolean
On Error Resume Next
modExists = Len(ThisWorkbook.VBProject.VBComponents(modName).N ame) < 0
End Function

The code does not remove it and has a cannot recognize vbProject in workbook
error. What is wrong?

Thanks

Dave Peterson

Removing a module
 
You sure it didn't say VBComponent (not VBProject)???

I got a compile error if I didn't add that reference (tools|references within
the VBE).

Another problem that could occur is that the module isn't removed because:

Tools|Macro|Security|Trusted Publishers tab
Trust access to Visual Basic Project

is unchecked.

I didn't get an error in my test. The "on error resume next" line suppressed
it.

And this security setting is a user by user setting--not something a developer
can change via code.

Candyman wrote:

Is there a difference in code going to Excel 2003?

I have the code to remove a module:

Private Sub RemoveModule(mName As String)
Dim objVBComp As VBComponent
If modExists(mName) = True Then
Set objVBComp = ThisWorkbook.VBProject.VBComponents(mName)
ThisWorkbook.VBProject.VBComponents.Remove objVBComp
End If
End Sub
'Before using these procedures, you'll need to set a reference in VBA to the
'VBA Extensibility library. In the VBA editor, go to the Tools menu, choose
'the References item, and put a check next to "Microsoft Visual Basic For
'Applications Extensibility" library.

Function modExists(modName As String) As Boolean
On Error Resume Next
modExists = Len(ThisWorkbook.VBProject.VBComponents(modName).N ame) < 0
End Function

The code does not remove it and has a cannot recognize vbProject in workbook
error. What is wrong?

Thanks


--

Dave Peterson

Bill Pfister

Removing a module
 
I've been using the following code for several years (from XL 97 to 2003)
without issue. I dim the variables as objects so that I can avoid using the
VB6 extensibility reference (the versioning of this library caused some
issues around the time of 97).

Dim wkb As Workbook
Dim vbcsT As Object
Dim vbcT As Object

set wkb = ActiveWorkbook

' If module exists, remove it
If ModuleExists(strModule) Then
Set vbcT = wkb.VBProject.VBComponents(strModule)
Call wkb.VBProject.VBComponents.REMOVE(vbcT)
End If



"Dave Peterson" wrote:

You sure it didn't say VBComponent (not VBProject)???

I got a compile error if I didn't add that reference (tools|references within
the VBE).

Another problem that could occur is that the module isn't removed because:

Tools|Macro|Security|Trusted Publishers tab
Trust access to Visual Basic Project

is unchecked.

I didn't get an error in my test. The "on error resume next" line suppressed
it.

And this security setting is a user by user setting--not something a developer
can change via code.

Candyman wrote:

Is there a difference in code going to Excel 2003?

I have the code to remove a module:

Private Sub RemoveModule(mName As String)
Dim objVBComp As VBComponent
If modExists(mName) = True Then
Set objVBComp = ThisWorkbook.VBProject.VBComponents(mName)
ThisWorkbook.VBProject.VBComponents.Remove objVBComp
End If
End Sub
'Before using these procedures, you'll need to set a reference in VBA to the
'VBA Extensibility library. In the VBA editor, go to the Tools menu, choose
'the References item, and put a check next to "Microsoft Visual Basic For
'Applications Extensibility" library.

Function modExists(modName As String) As Boolean
On Error Resume Next
modExists = Len(ThisWorkbook.VBProject.VBComponents(modName).N ame) < 0
End Function

The code does not remove it and has a cannot recognize vbProject in workbook
error. What is wrong?

Thanks


--

Dave Peterson


Candyman

Removing a module
 
I did not have the security - trust access to Visual Basic Project checked.
good point. My code was cut and paste, my error message was from memory (not
Memorex). this sounds like the ticket. Thanks!

"Dave Peterson" wrote:

You sure it didn't say VBComponent (not VBProject)???

I got a compile error if I didn't add that reference (tools|references within
the VBE).

Another problem that could occur is that the module isn't removed because:

Tools|Macro|Security|Trusted Publishers tab
Trust access to Visual Basic Project

is unchecked.

I didn't get an error in my test. The "on error resume next" line suppressed
it.

And this security setting is a user by user setting--not something a developer
can change via code.

Candyman wrote:

Is there a difference in code going to Excel 2003?

I have the code to remove a module:

Private Sub RemoveModule(mName As String)
Dim objVBComp As VBComponent
If modExists(mName) = True Then
Set objVBComp = ThisWorkbook.VBProject.VBComponents(mName)
ThisWorkbook.VBProject.VBComponents.Remove objVBComp
End If
End Sub
'Before using these procedures, you'll need to set a reference in VBA to the
'VBA Extensibility library. In the VBA editor, go to the Tools menu, choose
'the References item, and put a check next to "Microsoft Visual Basic For
'Applications Extensibility" library.

Function modExists(modName As String) As Boolean
On Error Resume Next
modExists = Len(ThisWorkbook.VBProject.VBComponents(modName).N ame) < 0
End Function

The code does not remove it and has a cannot recognize vbProject in workbook
error. What is wrong?

Thanks


--

Dave Peterson


Candyman

Removing a module
 
I did not know the part about diming the variables and the VB6 extensibility.
Thanks! Have a great day.

"Bill Pfister" wrote:

I've been using the following code for several years (from XL 97 to 2003)
without issue. I dim the variables as objects so that I can avoid using the
VB6 extensibility reference (the versioning of this library caused some
issues around the time of 97).

Dim wkb As Workbook
Dim vbcsT As Object
Dim vbcT As Object

set wkb = ActiveWorkbook

' If module exists, remove it
If ModuleExists(strModule) Then
Set vbcT = wkb.VBProject.VBComponents(strModule)
Call wkb.VBProject.VBComponents.REMOVE(vbcT)
End If



"Dave Peterson" wrote:

You sure it didn't say VBComponent (not VBProject)???

I got a compile error if I didn't add that reference (tools|references within
the VBE).

Another problem that could occur is that the module isn't removed because:

Tools|Macro|Security|Trusted Publishers tab
Trust access to Visual Basic Project

is unchecked.

I didn't get an error in my test. The "on error resume next" line suppressed
it.

And this security setting is a user by user setting--not something a developer
can change via code.

Candyman wrote:

Is there a difference in code going to Excel 2003?

I have the code to remove a module:

Private Sub RemoveModule(mName As String)
Dim objVBComp As VBComponent
If modExists(mName) = True Then
Set objVBComp = ThisWorkbook.VBProject.VBComponents(mName)
ThisWorkbook.VBProject.VBComponents.Remove objVBComp
End If
End Sub
'Before using these procedures, you'll need to set a reference in VBA to the
'VBA Extensibility library. In the VBA editor, go to the Tools menu, choose
'the References item, and put a check next to "Microsoft Visual Basic For
'Applications Extensibility" library.

Function modExists(modName As String) As Boolean
On Error Resume Next
modExists = Len(ThisWorkbook.VBProject.VBComponents(modName).N ame) < 0
End Function

The code does not remove it and has a cannot recognize vbProject in workbook
error. What is wrong?

Thanks


--

Dave Peterson



All times are GMT +1. The time now is 02:45 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com