• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 601
  • Last Modified:

Hide VBE Window when searching code modules

I'm implementing some code that will search all of the code modules (not form or report modules) to determine whether a specific function is defined in the database.  The code I'm using works fine, thanks to the code posted by JDettman in this post
    Set db = CurrentDb
    Set ctr = db.Containers("Modules")
    
    For Each doc In ctr.Documents
    
        DoCmd.OpenModule doc.Name
        Set myMod = Modules(doc.Name)
        
        Debug.Print myMod.Name
        Do Until myMod.Find(OnAction, StartLine, StartColumn, EndLine, EndColumn) = False
            If myMod.Find("Function", StartLine, 0, StartLine + 1, 0) Then
                bFound = True
            ElseIf myMod.Find("Sub", StartLine, 0, StartLine + 1, 0) Then
                bFound = True
            Else
                StartLine = EndLine
                StartColumn = EndColumn
                EndLine = Empty
                EndColumn = Empty
            End If
            If bFound Then Exit For
        Loop
            
    Next
    
    IsValidFunction = bFound

Open in new window

but opens the VBE window as soon as it hits the first

DoCmd.OpenModule doc.Name

command.  Is there a way to keep the VBE Window hidden during this process?
0
Dale Fye
Asked:
Dale Fye
  • 6
  • 4
5 Solutions
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Maybe
vbe.ActiveWindow.Visible = False

or

vbe.ActiveWindow.Close


mx
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
When Rick's F&R searches modules, the VBE window does flash ...
0
 
Dale FyeAuthor Commented:
Yeah, neither of those worked, just generated errors.  I think you are right, if Rick hasn't figure it out, what makes me think that I would be able to in this short a period of time.

Check your mail, sending you another version
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Well ... what I meant by 'flash' was ... each module window Opens/Closes ... so when done .... all are closed.

There has to be a way ...
Experiment with the SetFocus option of ActiveWindow, etc ...
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
OK ... I tried this with a bunch of code windows open, and they all closed:

VBE.MainWindow.Visible = False
0
 
Dale FyeAuthor Commented:
Joe,

Tried that one too.  You cannot search the modules unless you first open the module (tried and didn't work) and that line generates an error if the VBE.MainWindow.Visible = False, at least it did on 2007.

This really isn't critical, since developers are going to normally be in design view when creating the shortcut menus, anyway.  I just didn't like the visual of all those windows opening in the VBE.
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
I see.
I was able to install Add In here at work ... messing with it now.
0
 
Jim Dettman (Microsoft MVP/ EE MVE)PresidentCommented:
Try:

Application.VBE.MainWindow.Visible = False

If that doesn't do it for you (you'll get the flashing), then you can lock the window from updates with an API call (below and note not tested).  Make sure you unlock the window when done.

Jim.

Option Compare Database

Public Declare Function api_LockWindow32 Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal hWndChid As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Sub atLockWindow(TrueOrFalse As Boolean)

    Dim Status&, hWndTarget&
   
10  On Error Resume Next
20  If TrueOrFalse = True Then
30      hWndTarget =  FindWindowEx(0, 0, "wndclass_desked_gsk", Application.VBE.MainWindow.Caption)  
40      If hWndTarget <> 0 Then Status = api_LockWindow32(hWndTarget)
50  Else
60      Status = api_LockWindow32(0)
70  End If

End Sub
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Jim ... he already tried MainWindow ...

mx
0
 
Dale FyeAuthor Commented:
Ended up just accepting that in order to actually search the modules, you have to open the module, and you cannot do that with the VB editor window closed.  Watching the windows open is not that big of a deal anyway.
0
 
Dale FyeAuthor Commented:
None of the solutions actually resolved the issue, but they pointed me in the right direction.  In the end, I had to accept that what I wanted to do is not currently possible.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 6
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now