Hallo
Wer kann mir weiter helfen?
Ich möchte eine Arrayvariable Str(1 to 10) as String in Vb6(Active-X-dll) definieren und diese nach Excel übergeben.
Wie funktioniert das?
Das Codebeispiel unten zeigt, wie ich eine Variable verschieben kann, nun möchte ich aber die Arreivariabeln nicht einzeln, sondern als Array verschieben.
Besten dank für jede Antwort.
Grüsse Sebastian
Code Auszug VB6 'In Klassenmodul kFunktion
Public Function GetSettings(ByVal str) As String
mFilesEinlesen.ReadInManager
GetSettings = str
end Function
ich kenne mich mit Excel nicht aus und habe es auch nicht, kann also nichts testen.
Wenn von DLLs eine Variable zurückgegeben wird, die ein Array enthalten soll, wird das mit benutzerdefinieren Typen realisiert.
In VB sieht die Übergabe etwa so aus:
Option Explicit
Private Type MyText
Txt(0 To 10)
End Type
Private Sub Command1\_Click()
Dim i As Integer
Dim St As MyText
For i = 0 To 10
St.Txt(i) = Str(i)
Next
anzeigen St
End Sub
Private Sub anzeigen(ByRef St As MyText)
Dim i As Integer
For i = 0 To 10
List1.AddItem St.Txt(i)
Next
End Sub
Danke für den Tipp. Frage, wo ist dann der Code, welcher im
Klassenmodul steht, der dieser Array entgegennimmt?
der private Typ muß deklariert sein, Im Beispiel ist das:
Private Type MyText
Txt(0 To 10)
End Type
Wenn die DLL dann die Daten in dieser Form übergibt, kannst Du sie z.B. mit …
Private Sub anzeigen(ByRef St As MyText)
Dim i As Integer
For i = 0 To 10
List1.AddItem St.Txt(i)
Next
End Sub
verarbeiten.
Noch ein Beispiel aus der API-Guide, wie das mit Windows-DLLs aussieht:
Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Sub Form\_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'[email protected]
Dim SysTime As SYSTEMTIME
'Set the graphical mode to persistent
Me.AutoRedraw = True
'Get the system time
GetSystemTime SysTime
'Print it to the form
Me.Print "The System Date is:" & SysTime.wMonth & "-" & SysTime.wDay & "-" & SysTime.wYear
Me.Print "The System Time is:" & SysTime.wHour & ":" & SysTime.wMinute & ":" & SysTime.wSecond
End Sub
Wie das allerdings in der DDL aussieht, habe ich keine Ahnung, DDLs schreiben kann ich nicht.