Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#16

AW: AnsiStringArray aus DLL an Excel-VBA

  Alt 30. Apr 2019, 15:26
Danke für Deine VBA-Lösung!
Ich habe sie so abgewandelt, daß der Text sofort in den Excel-Zellen erscheint. Dazu brauchen wir eine neue Funktion in Excel's VBA wie folgt:

VBA-Code
Delphi-Quellcode:
Public Function GetDelphiStringVektor(Anzahl As Long) ' entweder OHNE Typangabe oder As Variant, was gleichbedeutend ist, da dies eine Matrix-Funktion sein soll
' ... und so geht es direkt in die Zellen

Dim flist As String
Dim LngP As Long
Dim alist() As String

Const Delimiter = 124

Dim StrVektor() As String
Dim i As Long
Dim n_Anz As Long
Dim Bis As Long

  LngP = PAnsiChar_To_Excel(Delimiter) ' >>> "|"

flist = VBStrFromAnsiPtr(LngP)
alist = Split(flist, "|")

n_Anz = UBound(alist) - LBound(alist) + 1

Bis = Anzahl
If n_Anz < Anzahl Then Bis = n_Anz
' Hat denn VBA keine Funktion wie Pascal's Min?? --> Bis := Min(a_Anz, Anzahl)

ReDim StrVektor(n_Anz, 0 To 0)
' SpaltenVektor

  If flist > "" Then
    For i = LBound(alist) To Bis - 1
      StrVektor(i, 0) = alist(i)
    Next
  End If

  GetDelphiStringVektor = StrVektor
End Function
Die beiden Lösungen sind zum Ausprobieren im beiliegenden Excel-File ToExcel_Test_2.xlsm vorhanden. Die DLL bleibt unverändert, daher habe ich sie nicht noch einmal hochgeladen.

Gruß, Andreas
Angehängte Dateien
Dateityp: zip ToExcel_Test_2.zip (19,6 KB, 5x aufgerufen)

Geändert von Andreas13 (30. Apr 2019 um 15:29 Uhr)
  Mit Zitat antworten Zitat