Shamil Salakhetdinov
shamil at users.mns.ru
Fri Mar 28 16:11:18 CDT 2008
Hi Mark, Here is how you can use Automation to process modules in other mdb: Public Function ProcessExtModules() Dim mdb As String mdb = "C:\Temp\test.mdb" Dim acc As Access.Application Set acc = New Access.Application acc.OpenCurrentDatabase (mdb) ProcessModules acc acc.CloseCurrentDatabase acc.Quit acQuitSaveNone Set acc = Nothing End Function Public Function ProcessModules( _ ByRef rapp As Access.Application) Dim oVBE As Object Dim mdl As Object Dim blnFound As Boolean Dim StartLine As Long Dim StartColumn As Long Dim EndLine As Long Dim EndColumn As Long 'To make life easier and lines shorter. Set oVBE = rapp.VBE.ActiveVBProject.VBComponents Dim s As String s = "" 'Check each module ... For Each mdl In oVBE If Len(s) > 0 Then s = s + vbCrLf 'for the required procedure ... 'Debug.Print oVBE(mdl.Name).CodeModule s = s + oVBE(mdl.Name).CodeModule Next Debug.Print s MsgBox s End Function I do not know about tutorials. They could exist but I never used them - all the above info is from MS Access/VBA online help and own R&D.... Beware: to master working with Automation (if you are only starting to do that) can take a lot of time... -- Shamil -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Mark A Matte Sent: Friday, March 28, 2008 11:30 PM To: Access Developers discussion and problem solving Subject: Re: [AccessD] VBE Experience anyone? Thanks Shamil and Jack, I found the solution you sent Jack...it actually opens each db/form/module...as for the VBE...I think I'm a little over my head for a Friday. I found this snippet...but too late in the week to try and get it to work today...will try again tomorrow. I cut all the extra stuff out... Shamil...How difficult is the code below to point to a different mdb...or can you point me a tutorial or articles? I'm looking to get the text of the form modules. Thanks Again, Mark A. Matte ****************************** Sub AddDAO() Dim oVBE As Object Dim mdl As Object Dim blnFound As Boolean Dim StartLine As Long Dim StartColumn As Long Dim EndLine As Long Dim EndColumn As Long 'To make life easier and lines shorter. Set oVBE = VBE.ActiveVBProject.VBComponents 'Check each module ... For Each mdl In oVBE 'for the required procedure ... Debug.Print oVBE(mdl.Name).CodeModule Next End Sub ****************************** > From: shamil at users.mns.ru > To: accessd at databaseadvisors.com > Date: Fri, 28 Mar 2008 22:22:02 +0300 > Subject: Re: [AccessD] VBE Experience anyone? > > Hi Mark, > > Do you meant other projects *referenced* by current MS Access application > database? > > Set reference to "Microsoft Visual Basic for Application Extensibility 3.5" > (VBIDE - usually located at C:\Program Files\Common Files\Microsoft > Shared\VBA\VBA6\VBE6EXT.OLB) > > And then this code will list all the referenced ms access projects > > Dim prj As VBProject > For Each prj In VBE.VBProjects > Debug.Print prj.Name > Next prj > > and for each project you can use your code: > > For Each prj In VBE.VBProjects > For Each vbComp In prj.VBE.VBProjects(1).VBComponents > .... > > If you wanted to list/process modules in any (not only referenced) ms access > database this way (i.e. using VBIDE) then there are at least two ways to do > that: > > - write COM add-in; > - start another MS Access instance from your main MS Access instance, open > external mdb in it (prevent AutoExec macro to run or start-up forms to open) > and use Automation + VBIDE... > > -- > Shamil > > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Mark A Matte > Sent: Friday, March 28, 2008 8:53 PM > To: Access Developers discussion and problem solving > Subject: [AccessD] VBE Experience anyone? > > > Hello All, > > I am using the code below to loop through the Modules and find stuff. It > always points to the current db. Is there any way to point this to a > different database...if so anyone know the syntax? > > Thanks Again, > > Mark A. Matte > > *************** > For Each vbComp In VBE.VBProjects(1).VBComponents With vbComp > StartLine = 1 StartColumn = 1 EndLine = > vbComp.CodeModule.CountOfLines EndColumn = 60 > strCode = .CodeModule.Lines(1, .CodeModule.CountOfLines) > ************* > _________________________________________________________________ > Test your Star IQ > http://club.live.com/red_carpet_reveal.aspx?icid=redcarpet_HMTAGMAR > -- > 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 _________________________________________________________________ In a rush? Get real-time answers with Windows Live Messenger. http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_Refresh _realtime_042008 -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com