My trick is not to use an OCX at all!
Suggest that you have a single-table database. Convert it to csv (comma seperated values) format.
Open it with excel, and using either worksheet function or VBA coding, generate code strings which would assign data values into items of an array in VB. Like this;
Under Excel your dataset looks like this:
A B C
1 ID Name Surname
2 1 Matthew Gibbs
3 2 Sean Connery
4 3 Robert Palmer
5 4 And So On
Now Convert data to code string via Column D :
D
1 VBCode
2 ="ID("&(ROW()-1)&")="&A1&":Name("&(ROW()-1)&")="&chr(34)&B1&chr(34)&":Surname("&(ROW()-1)&")="&chr(34)&C1&chr(34)
3 ="ID("&(ROW()-1)&")="&A2&":Name("&(ROW()-1)&")="&chr(34)&B2&chr(34)&":Surname("&(ROW()-1)&")="&chr(34)&C2&chr(34)
4 ...
5 ...
These formula will show:
D
1 VBCode
2 ID(1)=1:Name(1)="Matthew":Surname(1)="Gibbs"
3 ID(2)=2:Name(2)="Sean":Surname(2)="Connery"
Now copy the stuff on the column D from Row2 to the end. Paste it into your module in VB. Now you have a code that assigns your dataset to 3 arrays. Just declare them:
Dim ID(1 To X) As Integer
Dim Name(1 To X) As String, _
Surname(1 To X) As String
Do whatever you want with these arrays, assign to Listboxes or anything...
As you have - it seems - a long list of items, I would advice this code stuff be in a seperate module. As you compile, you'll have all the stuff embedded in your main exe.
I hope, I helped..