Hi to anyone who can help me,
I've only been a developer for a few days so pls try to keep it simple.
The story so far: I have started with an xml schema. I have converted this schema into vb classes using xsd.exe. I have made these classes into Com classes and created a .tlb which I am using with Excel's visual basic editor. I am now running into trouble attempting to write an xml where one of the classes is an array of enumerations. Let me show you. This is the relevant bits of the class (which itself is a sub-class of a class called 'report')
Partial Public Class EnergyAssessor
Private qualificationsField() As AssessorQualificationsCode
<System.Xml.Serialization.XmlElementAttribute("Qualifications")> _
Public Property Qualifications() As AssessorQualificationsCode()
Get
Return Me.qualificationsField
End Get
Set(ByVal value As AssessorQualificationsCode())
Me.qualificationsField = value
End Set
End Property
End Class
This is the enumeration:
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42"), _
System.SerializableAttribute(), _
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="DCLG-CEPC")> _
Public Enum AssessorQualificationsCode
'''<remarks/>
DEC
'''<remarks/>
NOS3
'''<remarks/>
NOS4
'''<remarks/>
NOS5
'''<remarks/>
CONSTRUCTION
End Enum
Referencing this in VB6 I have declared the objects like this:
Dim thisReport As New report
Dim thisReportHeader As New ReportHeader
Dim thisEnergyAssessor As New EnergyAssessor
Set thisReport.ReportHeader = thisReportHeader
Set thisReport.ReportHeader.EnergyAssessor = thisEnergyAssessor
and am able to apply attributes of the class with commands like this:
thisEnergyAssessor.CompanyName = Cells(14, 6)
I would have thought that I could then do something like this with the array:
while not (Cells(1,i) = null)
thisEnergyAssessor.Qualifications(i) = Cells(1,i)
i = i + 1
wend
But I get a compilation error. Similarly to read attributes from an existing class that I have filled from an xml document I have tried
Dim i As Integer
i = UBound(thisReport.ReportHeader.EnergyAssessor.Qualifications)
For j = 0 To i
Cells(x, i) = thisReport.ReportHeader.EnergyAssessor.Qualifications(i)
Next j
but i get a compilation error: Wrong number of arguments or invalid property assignment.
Is there another way? Cheers. Russ.
No one has replied yet! Why not be the first?
Sign in or Join us (it's free).