[AccessD] Class builder

Shamil Salakhetdinov shamil at users.mns.ru
Fri Jan 13 11:17:03 CST 2006


John,

The code I posted here works because it was tested before posting but it
works in another context.

You didn't say you write a (kind of) COM add-in and manipulate class modules
via VBE.

If you will not solve this problem until tomorrow I will check my archives
to find how it can be done - I did that both in MS Access and MS Excel -
it's simple but needs some testing...

I have to do some urgent work now...

Shamil

----- Original Message ----- 
From: "John Colby" <jwcolby at ColbyConsulting.com>
To: "'Access Developers discussion and problem solving'"
<accessd at databaseadvisors.com>
Sent: Friday, January 13, 2006 5:32 PM
Subject: Re: [AccessD] Class builder


> Shamil,
>
> Well, that didn't work.  I am trying to build this as an Add-In and
> apparently the .RunCommand acCmdNewObjectClassModule isn't available in
the
> context of code running out in an add-in.  I had been using the following
> code to get a module:
>
> Dim lMdl As VBComponent
> Dim VBProj As VBProject
>     Set VBProj = Application.VBE.ActiveVBProject
>     Set lMdl =
> Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_ClassModule)
>     lMdl.Name = strModuleName
>     Set AddModule = lMdl.CodeModule
>
> The "lMdl.Name = strModuleName" does correctly set the name of the class
> module.  The problem is that the created class is in limbo somewhere.  It
> exists, i.e. if I try it again, the "lMdl.Name = strModuleName" causes a
run
> time error.  I cannot save it however.  Even opening a module in the
current
> app and clicking save doesn't save it.
>
> John W. Colby
> www.ColbyConsulting.com
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Shamil
> Salakhetdinov
> Sent: Friday, January 13, 2006 3:53 AM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Class builder
>
> John,
>
> Here is one of the methods how a new class module can be created and saved
> using VBA:
>
> Dim mdl As Access.Module
> Dim objApp As Access.Application
> Dim strTempMdlName As String
> Dim strMdlName As String
>     Set objApp = Access.Application
>     strMdlName = "CTestClassModule"
>
>     With objApp.DoCmd
>         .RunCommand acCmdNewObjectClassModule
>         Set mdl = objApp.Modules.Item(objApp.Modules.Count - 1)
>         strTempMdlName = mdl.Name
>
>         mdl.InsertText "public TestProperty as integer"
>
>         .Close acModule, strTempMdlName, acSaveYes
>         .Rename strMdlName, acModule, strTempMdlName
>     End With
>
> Make sure there is no class module with the name CTestClassModule in your
> database...
>
> Shamil
>
> ----- Original Message -----
> From: "John Colby" <jwcolby at ColbyConsulting.com>
> To: "'Access Developers discussion and problem solving'"
> <accessd at databaseadvisors.com>
> Sent: Friday, January 13, 2006 4:08 AM
> Subject: [AccessD] Class builder
>
>
> > I have just finished a little class builder.  If anyone wants to play
with
> > it let me know.
> >
> > In the meantime, the one thing I can't figure out is how to save the
newly
> > created class.  I can click the save button and it saves the new module,
> but
> > I can't make it happen from VBA.  Anyone know what object saves unsaved
> > modules?
> >
> > John W. Colby
> > www.ColbyConsulting.com
> >
> >
> > -- 
> > AccessD mailing list
> > AccessD at databaseadvisors.com
> > http://databaseadvisors.com/mailman/listinfo/accessd
> > Website: http://www.databaseadvisors.com
>
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com




More information about the AccessD mailing list