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