Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1900to1904
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
09.10.2022 16:15:14
Rainer
Ich habe vor kurzem ein Upgrade von Excel 2002 (uralt, ich weiss) zu Excel 2021 gemacht.
Eine Änderung die mich stört ist, dass PutInClipboard nicht mehr so funktioniert wie gewohnt.
Mit

Dim vObject As DataObject
Set vObject = New DataObject
vObject.SetText "Dies ist ein Text"
vObject.PutInClipboard
konnte ich Text in die Zwischenablage kopieren und in einer anderen Anwendung (z.B. ein TextEditor) einfügen.
Wenn ich das jetzt mache werden nur Hieroglyphen im TextEditor eingefügt.
Mache ich etwas falsch oder wird das nicht mehr unterstützt? Gibt es Alternativen?
Einer der Gründe warum ich zum Teil diese Methode benutzt habe ist, dass Excel manchmal beim Kopieren einer Zelle Anführungszeichen (")
um den Text eingefügt hat - ich glaube wenn Zeilenumbrüche im Text enthalten waren - und diese Anführungszeichen mich gestört haben.
Grüsse
Rainer

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PutInClipboard
09.10.2022 17:04:43
Nepumuk
Hallo Rainer,
teste mal:

Option Explicit
Private Declare PtrSafe Function OpenClipboard Lib "user32.dll" ( _
ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32.dll" () As Long
Private Declare PtrSafe Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare PtrSafe Function SetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Long, _
ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalAlloc Lib "kernel32.dll" ( _
ByVal wFlags As Long, _
ByVal dwBytes As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalFree Lib "kernel32.dll" ( _
ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalLock Lib "kernel32.dll" ( _
ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalUnlock Lib "kernel32.dll" ( _
ByVal hMem As LongPtr) As Long
Private Declare PtrSafe Function lstrcpyA Lib "kernel32.dll" ( _
ByVal lpString1 As Any, _
ByVal lpString2 As Any) As LongPtr
Private Const CF_TEXT As Long = 1&
Private Const GMEM_MOVEABLE As Long = 2
Public Sub Kopieren()
Call StringToClipboard("Dies ist ein Text")
End Sub
Private Sub StringToClipboard(strText As String)
Dim lngptrPointer As LongPtr, lngptrHandle As LongPtr
lngptrPointer = GlobalAlloc(GMEM_MOVEABLE, Len(strText) + 1)
lngptrHandle = GlobalLock(lngptrPointer)
Call lstrcpyA(ByVal lngptrHandle, strText)
Call GlobalUnlock(lngptrPointer)
Call OpenClipboard(0)
Call EmptyClipboard
Call SetClipboardData(CF_TEXT, lngptrPointer)
Call CloseClipboard
Call GlobalFree(lngptrPointer)
End Sub
Gruß
Nepumuk
Anzeige
AW: PutInClipboard
10.10.2022 06:31:29
Rainer
Hallo Nepumuk,
ich habe Deinen Vorschlag nicht getestet, da ich durch Zufall eine andere Lösung gefunden habe.
Ich habe festgestellt, dass wenn ich unter Extras - Verweise die Microsoft Forms 2.0 Object Library in der Priorität an die letzte Stelle verschiebe funktioniert PutInClipboard wie gewohnt. Seltsam...
Trotzdem Danke, Rainer
AW: PutInClipboard
09.10.2022 18:16:52
Herbert_Grom
Hallo Rainer,
dies habe ich kürzlich hier aus dem Forum bekommen. Damit kannst du den Text direkt in ein Notepad-Blatt schreiben und es dir sofort anzeigen lassen:

Sub Text_In_Notepad()
Dim fso As Object, f, zelle
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\XXX\XXX.txt", 2, True)
f.WriteLine "Dies ist ein Text"
f.Close
Shell "C:\WINDOWS\Notepad.exe C:\XXX\XXX.txt", 5 '* 5 = vbNormalFocus
End Sub
Servus
Anzeige
AW: PutInClipboard
10.10.2022 06:35:37
Rainer
Hallo Herbert,
danke für die Antwort. Deine Lösung ist nicht ganz das was ich benötige. Ich hatte das Einfügen in einen Texteditor nur als Beispiel angegeben.
Grüsse Rainer
AW: PutInClipboard
10.10.2022 09:27:35
Herbert_Grom
Hallo Rainer,
mein Vorschlag war ja auch nur für das Notepad gedacht, wie du es als Beispiel aufgeführt hast. Wenn du nur dienen Text im Clipboard haben willst, dann ist Nepumuk's Code doch perfekt.
Übrigens, bei mir funktioniert deine Lösung für "PutInClipboard" nicht, obwohl "Forms 2.0" an letzter Stelle steht.
Userbild
Hast du sonst noch etwas geändert?
Kannst du bitte mal deinen gesamten Code posten?
Servus
Anzeige
AW: PutInClipboard
10.10.2022 08:39:12
volti
Hallo Rainer,
zur Ergänzung:
Das Thema ist bekannt. Es gab schon mehrfach genau das gleiche Problem. Immer diese beiden ? beim Einfügen. Bei Mr. Excel im Forum gab es mal folgenden Hinweis:
Alle Explorerfenster schließen - also diese "gelben Ordnersymbole in der Statusleiste".
Sieht komisch vor, aber getestet und es läuft
PS: Die API-Version läuft dagegen immer.....
Gruß
Karl-Heinz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige