Hallo Stefan,
zum Filtern in einem Buchhaltungsprogramm benötige ich einen String (Komma
wert1,wert2,wert3,wert4
Die Werte stehen in einer Exceltabelle untereinander (stammen aus einer
wert1
wert2
wert3
wert4
Hat jemand dafür einen Code auf "Lager" und kann mir diesen zur Verfügung
stellen.
erst einmal zur Info:
Diese NG wurde vor einiger Zeit von Microsoft aufgelöst, deine Postings
kommen also nur noch an, weil einige Newsserverbetreiber die NG noch nicht
gelöscht haben. Microsoft unterstützt momentan nur noch eigene Webforen.
Inzwischen ist im Usenet eine entsprechende Newsgroup unter
de.comp.office-pakete.ms-office.excel eingerichtet worden.
Zu deinem Problem:
Neben dem noch am leichtesten umzusetzenden Vorschlag von Andreas könnte
man auch noch einen Bereich in ein Array 'beamen' und anschließend die
Safearraystruktur so manipulieren, dass man nachher ein eindimensionales
Array hat. Dann kann man auch mit Join arbeiten. Da man dabei
Speicherbereiche direkt manipuliert, ist die Sache nicht ganz einfach und
ich würde einem Unerfahrenen davon abraten.
Eine weitere Option ist die Verwendung von ADO:
Public Sub JoinEx()
Dim adoConnection As Object
Dim adoRecordset As Object
Dim strResult As String
Dim strSheet As String
Dim strSQL As String
Dim strColDelimiter As String
Dim strRowDelimiter As String
Dim strBereich As String
Dim strHeader As String
Dim strNullExpr As String
Dim blnHeader As Boolean
Const adOpenKeyset As Long = 1
Const adLockOptimistic As Long = 3
Const adClipString As Long = 2
' Trennzeichen
strColDelimiter = ","
strRowDelimiter = ","
' Name des Arbeitsblattes
strSheet = "Tabelle1"
' Quellbereich
strBereich = "A1:A8"
' Zeichenfolge für leere Felder
strNullExpr = "#NV"
' Header nicht vorhanden
blnHeader = False
strHeader = "HDR=" & IIf(blnHeader, "Yes", "No") & ";"
Set adoConnection = CreateObject("ADODB.Connection")
Set adoRecordset = CreateObject("ADODB.Recordset")
' Verbinden mit eigener Datei
adoConnection.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;" & _
strHeader & """"
' Vom Blatt strSheet in den Recordset
strSQL = "SELECT * FROM [" & strSheet & "$" & strBereich & "];"
adoRecordset.Open _
strSQL, _
adoConnection, _
adOpenKeyset, _
adLockOptimistic
strResult = adoRecordset.GetString( _
adClipString, , strColDelimiter, strRowDelimiter, strNullExpr)
' strResult = Left(strResult, Len(strResult) - 1)
' Schließen
adoRecordset.Close
adoConnection.Close
MsgBox strResult
End Sub
Da du die Daten ja untereinander stehen hast, ist hier der Zeilentrenner
strRowDelimiter das Trennzeichen zwischen den Werten.
Viele Grüße
Michael