Difference between revisions of "Microsoft Access modDevelopment"

From database24
Jump to navigation Jump to search
Line 23: Line 23:
 
         Set objCodeModule = objVbComponent.CodeModule
 
         Set objCodeModule = objVbComponent.CodeModule
 
         With objCodeModule
 
         With objCodeModule
 
            strCode = .Lines(1, .CountOfLines)
 
            arrLine = Split(strCode, vbCrLf)
 
            intLine = 0
 
 
            blnHeader = False
 
            blnFound = False
 
            strResult = ""
 
            For Each varLine In arrLine
 
                intLine = intLine + 1
 
                If InStr(1, LCase(CStr(varLine)), LCase(strWhat), vbTextCompare) > 0 Then
 
                   
 
                    blnFound = True
 
                    If Not blnHeader Then
 
                        strMsg = strMsg & vbCrLf & _
 
                            objVbComponent.Name & vbCrLf & _
 
                            String(Len(objVbComponent.Name), "=") & vbCrLf
 
                        blnHeader = True
 
                    End If
 
                   
 
                    strResult = "Line " & intLine & " : " & varLine
 
                    strMsg = strMsg & vbCrLf & _
 
                        strResult
 
                End If
 
            Next
 
 
              
 
              
             If blnFound Then
+
             If .CountOfLines > 0 Then
                strMsg = strMsg & vbCrLf
+
              strCode = .Lines(1, .CountOfLines)
 +
              arrLine = Split(strCode, vbCrLf)
 +
              intLine = 0
 +
   
 +
              blnHeader = False
 +
              blnFound = False
 +
              strResult = ""
 +
              For Each varLine In arrLine
 +
                  intLine = intLine + 1
 +
                  If InStr(1, LCase(CStr(varLine)), LCase(strWhat), vbTextCompare) > 0 Then
 +
                     
 +
                      blnFound = True
 +
                      If Not blnHeader Then
 +
                          strMsg = strMsg & vbCrLf & _
 +
                              objVbComponent.Name & vbCrLf & _
 +
                              String(Len(objVbComponent.Name), "=") & vbCrLf
 +
                          blnHeader = True
 +
                      End If
 +
                     
 +
                      strResult = "Line " & intLine & " : " & varLine
 +
                      strMsg = strMsg & vbCrLf & _
 +
                          strResult
 +
                  End If
 +
              Next
 +
             
 +
              If blnFound Then
 +
                  strMsg = strMsg & vbCrLf
 +
              End If
 
             End If
 
             End If
 
         End With
 
         End With
Line 56: Line 58:
 
      
 
      
 
     Debug.Print strMsg
 
     Debug.Print strMsg
     MsgBox strMsg, vbOKOnly + vbInformation, "Tag Summary"
+
     MsgBox strMsg, vbOKOnly + vbInformation, "Code with '" & strWhat & "'"
 
End Sub
 
End Sub
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 78: Line 80:
 
     Dim blnHeader As Boolean
 
     Dim blnHeader As Boolean
 
     Dim strMsg As String
 
     Dim strMsg As String
   
+
 
     Set objVbProject = Application.VBE.ActiveVBProject
 
     Set objVbProject = Application.VBE.ActiveVBProject
 
     For Each objVbComponent In objVbProject.VBComponents
 
     For Each objVbComponent In objVbProject.VBComponents
 
         Set objCodeModule = objVbComponent.CodeModule
 
         Set objCodeModule = objVbComponent.CodeModule
 
         With objCodeModule
 
         With objCodeModule
       
 
            strCode = .Lines(1, .CountOfLines)
 
            arrLine = Split(strCode, vbCrLf)
 
 
              
 
              
             arrTag = Array("'@FIXME", "'@TODO")
+
             If .CountOfLines > 0 Then
            For Each varTag In arrTag
+
              strCode = .Lines(1, .CountOfLines)
           
+
              arrLine = Split(strCode, vbCrLf)
                blnHeader = False
+
   
                strResult = ""
+
              arrTag = Array("'@FIXME", "'@TODO")
                For Each varLine In arrLine
+
              For Each varTag In arrTag
                    If Left(varLine, Len(varTag)) = varTag Then
+
   
                        strResult = strResult & Replace(varLine, varTag, "-") & vbCrLf
+
                  blnHeader = False
                    End If
+
                  strResult = ""
                Next
+
                  For Each varLine In arrLine
               
+
                      If Left(varLine, Len(varTag)) = varTag Then
                If strResult <> "" Then
+
                          strResult = strResult & Replace(varLine, varTag, "-") & vbCrLf
                    strResult = Left(strResult, Len(strResult) - 1)
+
                      End If
                    If Not blnHeader Then
+
                  Next
                        Debug.Print objVbComponent.Name
+
   
                        Debug.Print String(Len(objVbComponent.Name), "=")
+
                  If strResult <> "" Then
                        strMsg = strMsg & objVbComponent.Name & vbCrLf & vbCrLf
+
                      strResult = Left(strResult, Len(strResult) - 1)
                        blnHeader = True
+
                      If Not blnHeader Then
                    End If
+
                          Debug.Print objVbComponent.Name
                    Debug.Print Mid(varTag, 2)
+
                          Debug.Print String(Len(objVbComponent.Name), "=")
                    Debug.Print String(Len(varTag), "-")
+
                          strMsg = strMsg & objVbComponent.Name & vbCrLf & vbCrLf
                    Debug.Print strResult
+
                          blnHeader = True
                    strMsg = strMsg & _
+
                      End If
                        Mid(varTag, 2) & vbCrLf & _
+
                      Debug.Print Mid(varTag, 2)
                        strResult & vbCrLf & vbCrLf
+
                      Debug.Print String(Len(varTag), "-")
                End If
+
                      Debug.Print strResult
             Next
+
                      strMsg = strMsg & _
 +
                          Mid(varTag, 2) & vbCrLf & _
 +
                          strResult & vbCrLf & vbCrLf
 +
                  End If
 +
              Next
 +
             End If
 
         End With
 
         End With
 
     Next
 
     Next
   
+
 
     MsgBox strMsg, vbOKOnly + vbInformation, "Tag Summary"
 
     MsgBox strMsg, vbOKOnly + vbInformation, "Tag Summary"
 
End Sub
 
End Sub
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 14:45, 27 July 2010

displayCodeWhere

List all code modules and lines where the sought term occurs.

  • Microsoft Visual Basic for Applications Extensibility
Sub displayCodeWhere(strWhat As String)
    Dim objVbProject As VBIDE.VBProject
    Dim objVbComponent As VBIDE.VBComponent
    Dim objCodeModule As VBIDE.CodeModule
    
    Dim strCode As String
    Dim arrLine As Variant
    Dim varLine As Variant
    Dim intLine As Integer
    Dim strResult As String
    Dim blnHeader As Boolean
    Dim blnFound As Boolean
    Dim strMsg As String
 
    Set objVbProject = Application.VBE.ActiveVBProject
    For Each objVbComponent In objVbProject.VBComponents
        Set objCodeModule = objVbComponent.CodeModule
        With objCodeModule
            
            If .CountOfLines > 0 Then
               strCode = .Lines(1, .CountOfLines)
               arrLine = Split(strCode, vbCrLf)
               intLine = 0
    
               blnHeader = False
               blnFound = False
               strResult = ""
               For Each varLine In arrLine
                   intLine = intLine + 1
                   If InStr(1, LCase(CStr(varLine)), LCase(strWhat), vbTextCompare) > 0 Then
                       
                       blnFound = True
                       If Not blnHeader Then
                           strMsg = strMsg & vbCrLf & _
                               objVbComponent.Name & vbCrLf & _
                               String(Len(objVbComponent.Name), "=") & vbCrLf
                           blnHeader = True
                       End If
                       
                       strResult = "Line " & intLine & " : " & varLine
                       strMsg = strMsg & vbCrLf & _
                           strResult
                   End If
               Next
               
               If blnFound Then
                   strMsg = strMsg & vbCrLf
               End If
            End If
        End With
    Next
    
    Debug.Print strMsg
    MsgBox strMsg, vbOKOnly + vbInformation, "Code with '" & strWhat & "'"
End Sub

displayTagSummary

Find the development tags @FIXME and @TODO and display them.

  • Microsoft Visual Basic for Applications Extensibility
Sub displayTagSummary()
    Dim objVbProject As VBIDE.VBProject
    Dim objVbComponent As VBIDE.VBComponent
    Dim objCodeModule As VBIDE.CodeModule
    Dim strCode As String
    Dim arrLine As Variant
    Dim varLine As Variant
    Dim arrTag As Variant
    Dim varTag As Variant
    Dim strResult As String
    Dim blnHeader As Boolean
    Dim strMsg As String
 
    Set objVbProject = Application.VBE.ActiveVBProject
    For Each objVbComponent In objVbProject.VBComponents
        Set objCodeModule = objVbComponent.CodeModule
        With objCodeModule
            
            If .CountOfLines > 0 Then
               strCode = .Lines(1, .CountOfLines)
               arrLine = Split(strCode, vbCrLf)
    
               arrTag = Array("'@FIXME", "'@TODO")
               For Each varTag In arrTag
    
                   blnHeader = False
                   strResult = ""
                   For Each varLine In arrLine
                       If Left(varLine, Len(varTag)) = varTag Then
                           strResult = strResult & Replace(varLine, varTag, "-") & vbCrLf
                       End If
                   Next
    
                   If strResult <> "" Then
                       strResult = Left(strResult, Len(strResult) - 1)
                       If Not blnHeader Then
                           Debug.Print objVbComponent.Name
                           Debug.Print String(Len(objVbComponent.Name), "=")
                           strMsg = strMsg & objVbComponent.Name & vbCrLf & vbCrLf
                           blnHeader = True
                       End If
                       Debug.Print Mid(varTag, 2)
                       Debug.Print String(Len(varTag), "-")
                       Debug.Print strResult
                       strMsg = strMsg & _
                           Mid(varTag, 2) & vbCrLf & _
                           strResult & vbCrLf & vbCrLf
                   End If
               Next
            End If
        End With
    Next
 
    MsgBox strMsg, vbOKOnly + vbInformation, "Tag Summary"
End Sub