Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PutInClipboard

PutInClipboard
05.08.2022 11:57:32
Herbert_Grom
Hallo,
habt ihr evtl. eine Idee, warum der folgende Code bei mir nur das Ergebnis des Bildes ergibt, wenn ich den Clipboardinhalt in eine eMail oder einen Notepad-Text einfügen will? Den Verweis "...2.0 Object Library" habe ich gesetzt.

Sub kopieren()
Dim objClip As DataObject, sTmp$
Set objClip = New DataObject
sTmp = Tabelle2.Cells(1, 1).Value
objClip.SetText sTmp
objClip.PutInClipboard
End Sub
Userbild
In Tabelle2.cells(1,1) steht dieser Text:
"Hallo Horst,
kannst Du mir bitte ...
...
Für eine kurze Bestätigung wäre ich Dir dankbar! Dann bis Dienstag.
Viele Grüße
Herbert"
Servus

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PutInClipboard
05.08.2022 12:02:23
EtoPHG
Hallo Herbert,
und warum nicht

sTmp = Tabelle2.Cells(1, 1).Text
, wenn der Inhalt Text ist?
Gruess Hansueli
AW: PutInClipboard
05.08.2022 12:08:03
Herbert_Grom
Hallo Hansueli,
vielen Dank für deinen Tipp, der jedoch keinen Erfolg brachte. Ich habe auch schon mit einem kürzeren Text und ohne Zeilenvorschub getestet, kein Erfolg. Hast du evtl. noch eine Idee?
Servus
AW: PutInClipboard
05.08.2022 12:13:26
Herbert_Grom
Im "Lokal-Fenster" zeigt er mir den Inhalt von sTmp an (s. Bild), aber einfügen kann ich ihn dann nicht!
Userbild
Servus
Anzeige
AW: PutInClipboard
05.08.2022 12:18:40
mumpel
Hallo!
Du solltest in den aktuellen Excelversionen auf das DataObject verzichten. Nutze stattdessen "RegisterClipboardFormat" (Beispiele im Internet).
Gruß, René
Nachtrag: Beispiel
05.08.2022 12:23:03
mumpel
kopierenplusminus

Option Explicit


Public Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Long

Public Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Public 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 ClipBoard_SetData(MyString As String)
   Dim hGlobalMemory As Long, lpGlobalMemory As Long
   Dim hClipMemory As Long, X As Long

   ' Allocate moveable global memory. 
   '------------------------------------------- 
   hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)

   ' Lock the block to get a far pointer 
   ' to this memory. 
   lpGlobalMemory = GlobalLock(hGlobalMemory)

   ' Copy the string to this global memory. 
   lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)

   ' Unlock the memory. 
   If GlobalUnlock(hGlobalMemory) <> 0 Then
      MsgBox "Could not unlock memory location. Copy aborted."
      GoTo OutOfHere2
   End If

   ' Open the Clipboard to copy data to. 
   If OpenClipboard(0&) = 0 Then
      MsgBox "Could not open the Clipboard. Copy aborted."
      Exit Function
   End If

   ' Clear the Clipboard. 
   X = EmptyClipboard()

   ' Copy the data to the Clipboard. 
   hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)

OutOfHere2:

   If CloseClipboard() = 0 Then
      MsgBox "Could not close Clipboard."
   End If

End Function

Sub SteTEst()
  Call ClipBoard_SetData(Range("A1").Value)
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002 und höher (32-bit) und Microsoft 365 (32-bit Desktop-Version)
In VBA geschrieben von Lukas Mosimann. Projektbetreuung: René Holtz

Code erstellt und getestet in Microsoft 365 - 32-bit Desktopversion
Codedarstellung mit VBAHTML 01.2022 erstellt.

Anzeige
AW: Nachtrag: Beispiel
05.08.2022 12:36:01
Herbert_Grom
Hallo René,
funktioniert bestens, wie immer, vielen Dank!!!
Servus
AW: Nachtrag: Beispiel
05.08.2022 12:41:10
Herbert_Grom
btw, nur das "PtrSafe" und "LongPtr" habe ich geändert.
Servus
AW: Nachtrag: Beispiel
05.08.2022 12:46:54
mumpel
Nutzt Du die 64-bit-Version? Brauchst Du die wirklich?
AW: Nachtrag: Beispiel
05.08.2022 12:50:44
Herbert_Grom
Nee, du hast recht ich habe die 32er Version. Mach ich wieder rückgängig. Danke!
AW: Nachtrag: Beispiel
05.08.2022 13:55:03
mumpel
Probleme macht PtrSafe auf einem 64-bit-Windows jedoch nicht.
AW: PutInClipboard
05.08.2022 12:35:06
snb

Sub M_snb()
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText cells(1).value
.PutInClipboard
End With
End Sub

AW: PutInClipboard
05.08.2022 12:39:00
Herbert_Grom
Vielen Dank, doch das bringt leider das gehabte Ergebnis.
Servus
Anzeige
AW: PutInClipboard
05.08.2022 14:00:33
Daniel
ja, ist ja auch nichts anderes, als den Verweis im Code zu aktivieren.
was passiert eigentlich, wenn du die Zelle ganz normal mit .Copy kopierst?
das .Copy bedient nicht nur die Excel-Zwischenablage sondern füllt auch die Windwos-Zwischenablage mit Daten.
(zumindest in Excel 2016)
Dieser Zugriff auf die Zwischenablage wird eigentlich nur benötigt, wenn man entweder die Windows-Zwischenablage auslesen will, oder in VBA erzeugte Daten dort hinein geben will.
Aber Zellinhalte müssten eigentlich mit dem einfachen .Copy übernommen werden.
Gruß Daniel
AW: PutInClipboard
05.08.2022 15:20:10
Herbert_Grom
Hallo Daniel,
das mit copy ist mir bekannt und das benutze ich ja auch. Ich wollte aber wissen, wieso "PutInClipboard" nicht funktioniert. Vielen Dank.
Servus
Anzeige
StalinClipboard ...
08.08.2022 16:19:45
lupo1
AW: StalinClipboard ...
08.08.2022 18:14:17
Herbert_Grom
Und was willst du mir damit sagen?
AW: Das war Version 2.0 jetzt nähern wir uns 3.0
09.08.2022 16:10:10
EtoPHG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige