Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
MicroStation
  • Product Communities
MicroStation
MicroStation Wiki Searching and Selecting Text Fields with VBA
    • Sign In
    • -MicroStation Wiki
      • +Learning Tips
      • -MicroStation
        • +3D Printing - MicroStation
        • +Animation - MicroStation
        • +Archive / Backup - MicroStation
        • +Base Geometry - MicroStation
        • +Batch Processing - MicroStation
        • +CONNECT Advisor - MicroStation
        • CONNECT Integration - MicroStation
        • +CONNECTION Client
        • +Cells - MicroStation
        • +Change Tracking - MicroStation
        • +Configuration - MicroStation
        • +Coordinate Systems - MicroStation
        • +Curves - MicroStation
        • +Custom Linestyles - MicroStation
        • +DGN - MicroStation
        • +DWG - MicroStation
        • +Database - MicroStation
        • +Detailing Symbols - MicroStation
        • +Dimensions - MicroStation
        • +Documentation & Help - MicroStation
        • +Drawing Aids - MicroStation
        • +Exception - MicroStation
        • +FAQ - MicroStation
        • +Feature Based Solids Modeling - MicroStation
        • +File Access - MicroStation
        • +GUI - MicroStation
        • +General - MicroStation
        • +Graphics Display - MicroStation
        • +Groups - MicroStation
        • +Hardware / Input Devices - MicroStation
        • +Import/Export - MicroStation
        • +Installation - MicroStation
        • +Interchange - MicroStation
        • +Interference - MicroStation
        • +Internationalization - MicroStation
        • +Levels - MicroStation
        • +Licensing - MicroStation
        • +Manipulation - MicroStation
        • +Markup / Redline - MicroStation
        • +Measure - MicroStation
        • +Mesh - MicroStation
        • +Models - MicroStation
        • +Multi-Lines - MicroStation
        • +OLE - MicroStation
        • +Other - MicroStation
        • +Parametrics - MicroStation
        • +Patterning - MicroStation
        • +Point Cloud - MicroStation
        • +Printing - MicroStation
        • -Programming - MicroStation
          • +General - Programming - MicroStation
          • +Macro Recorder - Programming - MicroStation
          • +MDL - Programming - MicroStation
          • -VBA - Programming - MicroStation
            • Automatic execution when opening or closing drawings
            • Automatic Subroutine Loading
            • Automatically generate plots with VBA
            • Avoiding Inaccuracies in VBA Methods - .FacetSolidAsShapes for SmartSolids
            • Bring All Text to a New Level with VBA
            • Browsing References for Specific Items
            • Calculating the range of Rotated Cells
            • Changing Colors of Levels in VBA
            • Changing display priority for references
            • Changing Element Colors from RGB to Indexed Color
            • Changing Layer Colors from RGB to an Indexed Color
            • Changing the Alignment of All Texts with VBA
            • Changing the display order of elements
            • Changing the presentation order of Layers
            • Changing the Transparency Settings of Levels with VBA
            • Cleaning Property Data with VBA
            • COM Server error
            • Create Engineering (HTML) Links in VBA
            • Creating Coordinates as Latitude and Longitude using VBA Lines
            • Creating VBA Levels - 'Level name is duplicate'
            • Deleting Lines of Length 0 Using VBA
            • Errors Attempting to Load VBA Projects
            • Errors while attempting to load VBA
            • Exporting the RGB Values of the Color Table to a Text File in VBA
            • Forms in an .mvba do not open some pc's
            • How to read the RGB values of the Attached Color Table
            • Keyin to load the VBA Project Manager in MicroStation Connect
            • Leaving a VBA Tools Dialog Box Open
            • Linking to VBA Elements with User Attributes
            • New Text Font Cannot be Assigned
            • Placing annotation cells with VBA
            • Print Organizer Control with VBA
            • Printing all Sheet Models to PDF Using VBA
            • Reading the Length of All Arcs
            • Removing All Object Data from Selected Cells in VBA
            • Replacing Points with Circles Using VBA
            • Replacing Text with VBA - Part 1: Introduction
            • Replacing Text with VBA - Part 2: Complex Structures
            • Running a VBA Routine by Keyin
            • +Searching and Evaluating Data in a drawing with VBA
            • Searching and Selecting Text Fields with VBA
            • Updating sequence control with VBA
            • Using a VBA Macro
            • Using the VBA object PropertyHandler to change the Element Information
            • VBA - Interface Error: 0x80040502
            • VBA Error in Execution: Project or Library Not Found
            • What are these "Default.mvba" files?
        • +Project Navigation - MicroStation
        • +Properties - MicroStation
        • +RSS Feeds - MicroStation
        • +Reference - MicroStation
        • +Security - MicroStation
        • +Selection - MicroStation
        • +Settings - MicroStation
        • +Sheet Composition - MicroStation
        • +Solids - MicroStation
        • +Standards - MicroStation
        • +Surfaces - MicroStation
        • +Tables - MicroStation
        • +Text - MicroStation
        • +UI Customization - MicroStation
        • +Units - MicroStation
        • +View - MicroStation
        • +Visualization - MicroStation
        • Welcome Page - MicroStation
        • +Accreditation - MicroStation
        • +i.Models - MicroStation
        • +ProjectWise Integration
        • +Raster - MicroStation
    • +Administration Wiki
    • +Annotations Wiki
    • +Bentley View Wiki
    • +MicroStation PowerDraft
    • +Printing and Plotting
    • +Programming Wiki
    • +Visualization Wiki
    • Window List Dialog for Missing Tool Dialog Boxes

    You are currently reviewing an older revision of this page.

    • History View current version

    Searching and Selecting Text Fields with VBA

       
      Applies To 
       
      Product(s): MicroStation
      Version(s): 08.11.09.578
      Environment:  Windows 7 32 bit,Windows 7 64 bit
      Area:  Programming
      Subarea:  VBA
      Original Author: Tristan Anderson, Bentley Technical Support Group
       

     Background Information

    Text can be linked to properties of elements and are referred to as text fields (fields). These texts differ from properties of normal texts because they also have attached the attributes as dependency links (dependency linkages).

    Steps

    If you want to specifically look for these text boxes and choose one, you may find it difficult because they usually are hard to distinguish between normal and text fields. You can recognize these fields by additional attribute that are attached, as in this example. You can get additional information with the Keyin "Analyze element" which displays the following:

    The important thing is circled in red, "Application ID: 9993", which serves as a tool to recognize specific data. You can search for this if you include a function such as MDL mdlDependency_getLinkage.

    Here is an example of how to use this feature and select all text boxes:

    Type root
        data(1024)  As Byte
        elemid(128) As Byte
        far_elemid(64) As Byte
        e_v(64) As Byte
        far_e_v(42) As Byte
        assoc(25) As Byte
        a_i(21) As Byte
        assoc1_i(42) As Byte
        elemidInModel(64) As Byte
        path_v(128) As Byte
    End Type
    Type DependencyLinkage
        appID As Integer
        appValue As Integer
        flags As Long
        nRoots As Integer
        toFill As Integer
        rootele As root
    End Type
     
    Declare Function mdlDependency_getLinkage Lib "stdmdlbltin.dll" (ByVal pLinkage As Long, ByVal maxSize As Long, ByVal pEl As Long, ByVal appID As Integer, ByVal appValue As Integer) As Long
     
    Sub fields_find()
    Dim Ee As ElementEnumerator
    Dim EeSub As ElementEnumerator
    Dim Sc As New ElementScanCriteria
    Dim oT As TextElement
    Dim Db() As DataBlock
    Dim l() As String
    Dim sum As Long
    Dim Stat As Long
    Dim lElementP As Long
    Dim Dep As DependencyLinkage
     
    ActiveModelReference.UnselectAllElements
    Sc.ExcludeAllTypes
    Sc.IncludeType msdElementTypeTextNode
    Set Ee = ActiveModelReference.Scan(Sc)
    Do While Ee.MoveNext
        Set EeSub = Ee.Current.AsTextNodeElement.GetSubElements
        Do While EeSub.MoveNext
            Set oT = EeSub.Current
            lElementP = modElementAccess.GetMSElementFromElement(oT)
            Stat = mdlDependency_getLinkage(VarPtr(Dep), 1024, lElementP, 9993, 0)
            If Stat = 0 Then
                ActiveModelReference.SelectElement Ee.Current
            End If
        Loop
    Loop
    End Sub

    The fields_find routine first searches for all text nodes, because fields are automatically linked to text nodes, even if only one text element is included.

    It is then checked whether a dependency exists linking to an item that was written with the Application ID 9993.

    Important note about the above code sample:

    The modElementAccess.GetMSElementFromElement function from the Project Native Code Utilities is used. This requires the project to be referenced and the function to be defined.

    This can be done by going to References under Tools in the VBA Editor, and "Select" or "Browse" to load it into the MicroStation project as shown below:

    You can find the project in the workspace under ..\Workspace\system\VBA\examples

    Communities
    • Home
    • Getting Started
    • Community Central
    • Products
    • Support
    • Secure File Upload
    • Feedback
    Support and Services
    • Home
    • Product Support
    • Downloads
    • Subscription Services Portal
    Training and Learning
    • Home
    • About Bentley Institute
    • My Learning History
    • Reference Books
    Social Media
    •    LinkedIn
    •    Facebook
    •    Twitter
    •    YouTube
    •    RSS Feed
    •    Email

    © 2023 Bentley Systems, Incorporated  |  Contact Us  |  Privacy |  Terms of Use  |  Cookies