Thema Datum  Von Nutzer Rating
Antwort
22.10.2020 16:16:58 Ole
NotSolved
Blau String in Zwischenablage kopieren
22.10.2020 16:37:00 volti
*****
Solved
22.10.2020 17:23:06 Ole
NotSolved
22.10.2020 17:36:24 volti
*****
NotSolved
22.10.2020 17:58:48 Ole
NotSolved

Ansicht des Beitrags:
Von:
volti
Datum:
22.10.2020 16:37:00
Views:
1066
Rating: Antwort:
 Nein
Thema:
String in Zwischenablage kopieren

Hallo Ole,

 

das Problem mit den zwei Zeichen ?? ist bekannt und kommt temporär vor, wenn man mit dem DataObject arbeitet. 

Dazu gab es mal bei Mr. Excel im Forum folgenden Hinweis:

Alle Explorerfenster schließen - also diese "gelben Ordnersymbole in der Statusleiste".

 

Falls das nichts bringt und Du den Aufwand nicht scheust, kopiere über die API. Hier  die zwei Varianten API/DataObject ohne Verweiß  als Muster:

 

Option Explicit
  
Private Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
        ByVal dwBytes As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GlobalUnlock Lib "kernel32" (ByVal hMem As LongPtr) As Long
Private Declare PtrSafe Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
        ByVal lpString2 As Any) As LongPtr
Private Declare PtrSafe Function SetClipboardData Lib "user32" (ByVal wFormat As Long, _
        ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As LongPtr) As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long

Dim hMem As LongPtr, lpGMem As LongPtr
  
Function KopiereinClpbrd(Optional ClpTxt As String) As String
'Kopieren über die API (alternativ)
 hMem = GlobalAlloc(&H42, Len(ClpTxt) + 1)
 lpGMem = GlobalLock(hMem)
 lpGMem = lstrcpy(lpGMem, ClpTxt)
 If GlobalUnlock(hMem) = 0 Then
    If OpenClipboard(0&) <> 0 Then
       EmptyClipboard
       SetClipboardData 1, hMem  '1=CF_TEXT
       CloseClipboard
    End If
 End If
 
End Function

Function KopiereinClpbrd2(Optional ClpTxt As String) As String
'Funktion kopiert Text in die Zwischenablage
 On Error Resume Next
 
 With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText (ClpTxt)
    .PutInClipboard           'Text in die Zwischenablage
 End With

End Function

  
Sub Copytest()
 KopiereinClpbrd "Teste mich"
End Sub

viele Grüße

Karl-Heinz

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.10.2020 16:16:58 Ole
NotSolved
Blau String in Zwischenablage kopieren
22.10.2020 16:37:00 volti
*****
Solved
22.10.2020 17:23:06 Ole
NotSolved
22.10.2020 17:36:24 volti
*****
NotSolved
22.10.2020 17:58:48 Ole
NotSolved