Missing function for OData and Office

The last entry of Consuming OData with Office VBA series had a small glitch - one of the helper functions is missing. The code isn't too tricky to write, but it's a handy little thing to have in your VBA toolkit. It simply takes a collection of dictionaries, and returns a new collection with all the keys, with duplicates removed.

Function GetDistinctKeys(ByVal objCollection As Collection) As Collection
  Dim objResult As Collection
  Dim objDictionary As Dictionary
  Dim objKeys As Dictionary
  Dim objKey As Variant
  
  ' Gather each key.
  Set objKeys = New Dictionary
  For Each objDictionary In objCollection
    For Each objKey In objDictionary.Keys
      If Not objKeys.Exists(objKey) Then
        objKeys.Add objKey, Nothing
      End If
    Next
  Next
    
  Set objResult = New Collection
  
  ' Put all keys in a collection.
  For Each objKey In objKeys
    objResult.Add objKey
  Next
  
  Set GetDistinctKeys = objResult
End Function

Thanks to Matt Chappel of www.coretech.net for spotting this one, and enjoy!