SPCFolder.Find
SVB Example
Searching for an item by name recursively:
Sub Main
Dim oOM As New ObjectManager
'Reconnect into Enterprise
oOM.Reconnect Application
Dim itemNameToSearchFor As String
itemNameToSearchFor = "BREAD Charts"
'Search the entire "Statistica Enterprise" folder structure for the first item
'named "BREAD Charts" and report information about it.
Dim fullPath As String
Dim theObject
Set theObject = FindItemInEnterpriseFolder(oOM, oOM.RootFolder, itemNameToSearchFor, fullPath)
If TypeName(theObject) <> "Empty" Then
Dim rpt As New Report
rpt.SelectionText ="""" & itemNameToSearchFor & """ found." & vbCrLf & _
"Object type: " & TypeName(theObject) & "." & vbCrLf & _
"Location: " & fullPath
rpt.Visible = True
Else
MsgBox "Unable to find """ & itemNameToSearchFor & """.", vbExclamation
End If
oOM.Disconnect
End Sub
'Searches for an item by name within the specified folder. Note that this search will be recursive,
'meaning that subfolders will also be searched. Also note that it will return the first item
'with the specified name that is encountered.
Function FindItemInEnterpriseFolder(ByVal oOM As ObjectManager, ByVal theFolder As SPCFolder, ByVal ItemName As String, ByRef fullPath As String) As Variant
Dim theObject
'Note that SPCFolder.Find only searches within itself,
'it will NOT recurse through its subfolders.
'Also, note that the "1" for the second parameter will make the search case INsensitive.
Set theObject = theFolder.Find(ItemName, 1)
'If item was found as a direct child in this folder, then return it.
If TypeName(theObject) <> "Empty" Then
fullPath = theFolder.PathEx(True, True)
Set FindItemInEnterpriseFolder = theObject
Exit Function
'Otherwise, we will need to recurse through any subfolders.
Else
'Get a list of subfolders in this folder
Dim subFolders
Set subFolders = theFolder.List(swcFolder)
Dim i As Long
'Iterate through the subfolders and return if we find an item by specified name.
For i = LBound(subFolders) To UBound(subFolders)
Set theObject = FindItemInEnterpriseFolder(oOM, subFolders(i), ItemName, fullPath)
If TypeName(theObject) <> "Empty" Then
Set FindItemInEnterpriseFolder = theObject
Exit Function
End If
Next
End If
End Function
Copyright © 2020. Cloud Software Group, Inc. All Rights Reserved.
