Habe mal Excel 32Bit installiert aber keine Ahnung ob es das ist was du willst..
Ich werde da nicht so recht schlau draus.
Klick auf Button GetIt füllt die Cells in Excel
Klick auf Button CleanUp löscht die Einträge.
Ohne Form und ausgeführt in Excel!
Code:
Option Explicit
' Pfad aktualisieren:
Private Declare Function PAnsiChar_To_Excel Lib "D:\Test\Delphi_String_for_Excel_Test" ( _
Optional ByVal Delimiter As Byte = 59 _
) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" ( _
ByVal lpString As Long _
) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal length As Long _
)
Private Function VBStrFromAnsiPtr(ByVal lpStr As Long) As String
Dim bStr() As Byte
Dim cChars As Long
On Error Resume Next
' Get the number of characters in the buffer
cChars = lstrlen(lpStr)
If cChars Then
' Resize the byte array
ReDim bStr(0 To cChars - 1) As Byte
' Grab the
ANSI buffer
Call CopyMemory(bStr(0), ByVal lpStr, cChars)
End If
' Now convert to a VB
Unicode string
VBStrFromAnsiPtr = StrConv(bStr, vbUnicode)
End Function
Private Sub CleanUp()
Range("B1:B4").Delete XlDeleteShiftDirection.xlShiftUp
End Sub
Private Sub GetIt()
Dim flist As String
Dim LngP As Long
Dim alist() As String
Dim Delimiter As Byte
Dim arTesting As Variant
Delimiter = 124
LngP = PAnsiChar_To_Excel(Delimiter) ' >>> "|"
flist = VBStrFromAnsiPtr(LngP)
alist = Split(flist, "|")
If flist > "" Then
arTesting = Application.WorksheetFunction.Transpose(alist)
Range("B1:B4").Value = arTesting
End If
End Sub
Wie du das nun schlussendlich regelst über Button oder sonst wie entscheide es selbst..
Aber der Wunsch die Strings in einem Schub nach Excel zu transponieren sollte dem entsprechen.
Delphi > VBA > Excel
Ich hoffe du kommst mit dem Rest selber klar.
gruss