ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
SPShawn Pantzke08/07/2014

Good morning all,

I have a need to perform a search using vba within excel. I have the code working, kind of, but I search on the variable "ECN" and only get 12 of 34 results to populate.

I am trying to populate a list of drawings affected by an ECN by searching the database and then returning various variables into a excel spreadsheet that is used for distribution of the ECN.

Here is my code as of thus far. Hopefully someone can spot a silly misttake.

Sub FindFiles()

Dim eVault          As IEdmVault5
Dim eSearch         As IEdmSearch5
Dim eResult         As IEdmSearchResult5
Dim eFile           As IEdmFile5
Dim eFolder         As IEdmFolder5
Dim EnumVar         As IEdmEnumeratorVariable5
Dim Var             As Variant
Dim strVar          As String
Dim ConfigList      As EdmStrLst5
Dim Configuration   As String
Dim pos             As IEdmPos5
Dim RowIndex        As Long
Dim test            As Long
Dim FileCount       As Long
Dim vaultName       As String
Dim adminPassword   As String


RowIndex = 7
FileCount = 0
vaultName = "Insert name here"
adminPassword = "Insert Admin Password Here"

    Set eVault = New EdmVault5
    eVault.Login "admin", adminPassword, vaultName
    Set eSearch = eVault.CreateSearch
   
    Var = Range(Cells(3, 23), Cells(3, 23))
    eSearch.AddVariable "ECN", "3842"
    Set eResult = eSearch.GetFirstResult
    While Not eResult Is Nothing
        FileCount = FileCount + 1
        'Debug.Print eResult.Name
        If LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "slddrw" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "dwg" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "xls" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "xlsx" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "doc" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "docx" _
            Or LCase(Right(eResult.Name, Len(eResult.Name) - InStr(1, eResult.Name, "."))) = "idw" _
            Then
           
            'Debug.Print eResult.Name
            Set eFile = eVault.GetFileFromPath(eResult.Path, eFolder)
           
            Set ConfigList = eFile.GetConfigurations
            Set pos = ConfigList.GetHeadPosition
            Configuration = ConfigList.GetNext(pos)
           
            Set EnumVar = eFile.GetEnumeratorVariable
           
            EnumVar.GetVar "ECN_Purchasing To Review", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     PTR: " + strVar
            Range(Cells(RowIndex, 2), Cells(RowIndex, 2)) = strVar
           
           
            EnumVar.GetVar "ECN_Document Status", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     Status: " + strVar
            Range(Cells(RowIndex, 3), Cells(RowIndex, 3)) = strVar
           
            EnumVar.GetVar "Book", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     Book: " + strVar
            Range(Cells(RowIndex, 4), Cells(RowIndex, 4)) = strVar
           
            EnumVar.GetVar "Book Section", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     Section: " + strVar
            Range(Cells(RowIndex, 5), Cells(RowIndex, 5)) = strVar
           
            strVar = Left(eResult.Name, InStr(1, eResult.Name, ".") - 1)
            'Debug.Print "     DWG/DOC: " + strVar
            Range(Cells(RowIndex, 6), Cells(RowIndex, 6)) = strVar
           
            EnumVar.GetVar "Revision", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     Rev: " + strVar
            Range(Cells(RowIndex, 9), Cells(RowIndex, 9)) = strVar
           
            EnumVar.GetVar "REV Description", Configuration, Var
            strVar = CStr(Var)
            'Debug.Print "     Desc. of Change: " + strVar
            Range(Cells(RowIndex, 10), Cells(RowIndex, 10)) = strVar
           
            RowIndex = RowIndex + 1
        End If
        Set eResult = eSearch.GetNextResult
    Wend
    Debug.Print FileCount

End Sub