[MS Access] Inhalt eines Listenfeldes in einem CSV-String erfassen

' beinhaltet alle Zeilen des Listenfeldes mit CRLF getrennt 
Dim sAllRows As String 
' eine Zeile, Spalten durch Tab getrennt 
Dim sSingleRow As String 

Listenfeld1.SetFocus 

' Ab Zeile 1, da 0 = Spaltenüberschriften 
For row = 1 To Listenfeld1.ListCount - 1 
    sSingleRow = "" 
    
    ' alle Spalten 
    For col = 0 To Listenfeld1.ColumnCount - 1 
        If sSingleRow = "" Then 
            sSingleRow = Listenfeld1.Column(col, row) 
        Else 
            ' Spalten durch Tab trennen 
            sSingleRow = sSingleRow & vbTab & Listenfeld1.Column(col, row) 
        End If 
    Next col 
    
    If sAllRows = "" Then 
        sAllRows = sSingleRow 
    Else 
        ' Zeilen durch CRLF trennen 
        sAllRows = sAllRows & vbNewLine & sSingleRow 
    End If 
Next row

[MS Access] String in die Zwischenablage kopieren

' Aufruf: CopyToClipBoard ("Text für Zwischenablage")
' in ein neues Modul einfügen:

Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long 
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long 
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long 
Declare Function CloseClipboard Lib "User32" () As Long 
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long 
Declare Function EmptyClipboard Lib "User32" () As Long 
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long 
Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long 

Public Const GHND = &H42 
Public Const CF_TEXT = 1 
Public Const MAXSIZE = 4096 

Function CopyToClipBoard(TextToCopy As String) 
   Dim hGlobalMemory As Long
   Dim lpGlobalMemory As Long 
   Dim hClipMemory As Long
   Dim X As Long 

   ' Globalen Speicher reservieren 
   hGlobalMemory = GlobalAlloc(GHND, Len(TextToCopy) + 1) 
   lpGlobalMemory = GlobalLock(hGlobalMemory) 

   ' String in Speicherbereich kopieren 
   lpGlobalMemory = lstrcpy(lpGlobalMemory, TextToCopy) 

   ' Speicherbereich freigeben 
   If GlobalUnlock(hGlobalMemory) <> 0 Then 
      MsgBox "Speicher konnte nicht freigegeben werden." 
   Else 
       ' Zwischenablage öffnen 
       If OpenClipboard(0&) = 0 Then 
          MsgBox "Zwischenablage konnte nicht geöffnet werden." 
          Exit Function 
       End If 
    
       ' Zwischenablage leeren 
       X = EmptyClipboard() 
    
       ' Daten in die Zwischenablage kopieren 
       hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory) 
   End If 

   If CloseClipboard() = 0 Then 
      MsgBox "Zwischenablage konnte nicht geschlossen werden." 
   End If 
End Function 

[MS Access] Listenfeld – Einen Eintrag in die Zwischenablage kopieren

' Listenfeld1 - Listenfeld mit Inhalt 
' txtHidden - Verstecktes Hilfsfeld auf dem Formular für Text zum kopieren 

Private Sub btnCopy_Click() 
    Listenfeld1.SetFocus 
    
    ' Wert aus Spalte 1 [0..n] holen und an verstecktes Textfeld übergeben 
    txtHidden = Listenfeld1.Column(1) 
    txtHidden.SetFocus
    
    ' Inhalt des versteckten Feldes selektieren 
    txtHidden.SelStart = 0 
    txtHidden.SelLength = Len(txtHidden) 
    
    ' Inhalt in die Zwischenablage kopieren 
    DoCmd.RunCommand acCmdCopy 
End Sub