View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Jake Marx[_3_] Jake Marx[_3_] is offline
external usenet poster
 
Posts: 860
Default programmatic generation of Enum To String functions

Hi R Avery,

Not sure if this is what you're looking for, but here's some code that will
output the list of data type enums (names and values) for the ADO library:

Sub test()
Dim tl As TLI.TypeLibInfo
Dim mi As TLI.MemberInfo


Set tl = New TypeLibInfo

tl.ContainingFile = "C:\Program Files\Common " & _
"Files\System\ado\msado15.dll"

For Each mi In tl.GetTypeInfo("DataTypeEnum").Members
Debug.Print mi.Name & ": " & mi.Value
Next mi
End Sub


The reference you're looking for is called "TypeLib Information".

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


R Avery wrote:
I have the problem right now that i wish i had a function to convert a
number of a particular enum to string (e.g.,
ADODB.DataTypeEnum.adDBTimeStamp to "adDBTimeStamp"). It should be
possible to automatically generate these conversion functions.

I know it is possible using some complicated object library that i
forget the name to scan a type library and programmatically iterate
over interfaces, methods of interfaces, etc, and i believe can read
enums. Therefore, a perfect application of this object library would
be to create the functionality that I discussed above. All i would
have to do is pass the path of the DLL or TLB file, and the name of
the enum, and the function would return the conversion functions.

Has anyone done this? Any help would be appreciated.


For example, it should automatically accept an Enum like this:


Public Enum cbfPhase
cbfNotAPhase
cbfNotStarted
cbfParsed
cbfBeta
cbfData
cbfDone
End Enum

And turn it into these:

Public Function cbfPhaseToString(ByVal Value As cbfPhase) As String
' Method for converting cbfPhase values into a String.
Select Case Value
Case cbfNotAPhase
cbfPhaseToString = "NotAPhase"
Case cbfNotStarted
cbfPhaseToString = "NotStarted"
Case cbfParsed
cbfPhaseToString = "Parsed"
Case cbfBeta
cbfPhaseToString = "Beta"
Case cbfData
cbfPhaseToString = "Data"
Case cbfDone
cbfPhaseToString = "Done"
End Select
End Function


Public Function StringTocbfPhase(ByVal Value As String) As cbfPhase
' Method for converting a String into cbfPhase.
Select Case Value
Case "NotAPhase"
StringTocbfPhase = cbfNotAPhase
Case "NotStarted"
StringTocbfPhase = cbfNotStarted
Case "Parsed"
StringTocbfPhase = cbfParsed
Case "Beta"
StringTocbfPhase = cbfBeta
Case "Data"
StringTocbfPhase = cbfData
Case "Done"
StringTocbfPhase = cbfDone
End Select
End Function