Daten in die Zwischenablage kopieren

Wenn Daten einer Datenbank auch in anderen Anwendungen genutzt werden sollen, ist es hilfreich, wenn dieser Datenaustausch auch bequem und einfach über die Zwischenablage erfolgen kann. Dazu muss der Benutzer die Daten eines Formulars oder einer Tabelle in die Zwischenablage kopieren können. Neben Windows API und externen Komponenten gibt es hierfür noch weitere Alternativen.

Der einfachste Fall liegt vor, wenn Sie es dem Benutzer ermöglichen möchten, den Inhalt eines Steuerelements in einem Formular oder einen ganzen Datensatz beziehungsweise Teile davon in die Zwischenablage zu kopieren. Das Einzige, was Sie dazu brauchen, ist ein Steuerelement, in dem sich der zu kopierende Inhalt befindet und das den Fokus bekommen kann.

Formularinhalte kopieren

Möchten Sie also Teile eines Datensatzes kombinieren und im Ganzen kopieren, fügen Sie dazu einfach ein Textfeld in das Formular ein und geben den Inhalt als Formel an. Möchten Sie beispielsweise in einem Formular zur Erfassung von Adressen die komplette Adresse zusammensetzen, könnte das wie in Bild 1 aussehen.

Bild 1: Formular zur Erfassung von Adressdaten.
Bild 1: Formular zur Erfassung von Adressdaten.

Sie brauchen dann noch eine Schaltfläche, im Beispiel heißt sie bttMerken, mit der Sie den Kopiervorgang starten. Für diese Schaltfläche erstellen Sie eine Ereignisprozedur für das Click- Ereignis (Listing 1). Um den Inhalt des Textfeldes txtAdresse mit der Anschrift zu kopieren, müssen Sie zunächst dafür sorgen, dass das Steuerelement den Fokus hat, indem Sie die SetFocus-Methode aufrufen. Anschließend markieren Sie den Inhalt des Textfeldes und legen dazu mit der Sel- Start-Eigenschaft den Anfang der Markierung auf 0 fest. Danach bestimmen Sie die Länge der Markierung mit der SelLength-Eigenschaft. Die Länge des Inhalts wird mit Hilfe der Len-Funktion ermittelt. Den markierten Text kopieren Sie zum Schluss mit der DoMenuItem-Methode.

Private Sub bttMerken_Click()
Me.txtAdresse.SetFocus
'Text markieren
Me.txtAdresse.SelStart = 0
Me.txtAdresse.SelLength = Len(Me.txtAdresse.Value)
'Text kopieren
DoCmd.DoMenuItem acFormBar, acEditMenu, acCopy, , acMenuVer70
End Sub