AW: Nur unformatierten Text einfügen
12.11.2024 19:48:01
volti
Hallo Wolfgang,
falls Deine Kollegen mit den hier bereits vorgeschlagenen Maßnahmen uneinsichtig sind... :-)
Es geht auch anders, allerdings mit etwas Aufwand. Das u.a. Makro kopiert den Inhalt der Zwischenablage als Text. Der kann dann auch via Strg-V usw. eingefügt werden.
Allerdings muss das Makro auch irgendwie aufgerufen werden. Z.B. über eine umgelenkte Tastenkombination oder man legt sie in die Workbook_Activate, Shee_Activate Funktionen. Diese sollte ja immer durchlaufen werden, wenn man von einer anderen Anwendung zurück nach Excel kommt....
Vielleicht wäre das ja was für DIch.
abgeleitet von hier:
https://www.clever-excel-forum.de/Thread-Excel-Range-als-Werte-in-die-Zwischenablage-kopieren
Code:
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 GlobalSize 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 IsClipboardFormatAvailable Lib "user32" ( _
ByVal wFormat As Long) As Long
Private Declare PtrSafe Function SetClipboardData Lib "user32" ( _
ByVal wFormat As Long, ByVal hMem As LongPtr) As LongPtr
Private Declare PtrSafe Function GetClipboardData Lib "user32" ( _
ByVal wFormat As Long) 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
Function KopiereAlsText() As String
' Kopiert den Inhalt der Zwischenablage als Text
Dim hMem As LongPtr, lpGMem As LongPtr, sCliptext As String, i As Long
Const CF_TEXT As Long = 1
If IsClipboardFormatAvailable(CF_TEXT) > 0 Then ' Daten vorhanden?
For i = 1 To 2
OpenClipboard 0& ' Zwischenablage öffnen
If i = 1 Then hMem = GetClipboardData(CF_TEXT) ' TEXT aus Zwischenablage
If i = 2 Then hMem = GlobalAlloc(&H42, Len(sCliptext)) ' Speicher reservieren
If hMem > 0 Then
lpGMem = GlobalLock(hMem) ' Speicher blockieren
If i = 1 Then
sCliptext = Space(CLng(GlobalSize(hMem))) ' Platz reservieren
lstrcpy sCliptext, lpGMem ' Daten kopieren
GlobalUnlock hMem ' Speicher freigeben
EmptyClipboard ' Zwischenablage leeren
Else
lpGMem = lstrcpy(lpGMem, sCliptext) ' Daten kopieren
If GlobalUnlock(hMem) = 0 Then _
SetClipboardData CF_TEXT, hMem ' TEXT in Zwischenablage
End If
End If
CloseClipboard ' Zwischenablage schließen
Next i
End If
End Function
' ###############################################
Sub Worksheet_Activate()
Call KopiereAlsText
End Sub
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz