Fast die Lösung
12.01.2006 13:17:14
R.Schmitt
Der Code ist nicht von mir sondern modifiziert aus dem Forum :
Option Explicit
Private Declare
Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Private Declare
Function CloseClipboard Lib "user32" () As Long
Private Declare
Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare
Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare
Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Long, ByVal ByteLen As Long)
Private Declare
Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const CF_TEXT = 1
Public
Sub Gerhard()
Dim hStrPtr As Long, lLength As Long, sBuffer As String
OpenClipboard FindWindow("XLMAIN", vbNullString)
hStrPtr = GetClipboardData(CF_TEXT)
If hStrPtr <> 0 Then
lLength = lstrlen(hStrPtr)
If lLength > 0 Then
sBuffer = Space$(lLength)
CopyMemory ByVal sBuffer, ByVal hStrPtr, lLength
End If
End If
CloseClipboard
ActiveCell.formula_
=CStr(Now) & vbLf & Application.UserName & vbLf & sBuffer
End Sub
und tut bisher genau das Gewünschte.
Nur wie lasse ich das Makro nur dann laufen, wenn der Anwender
im Menu Cells aus "Einfügen" klickte ?
Gruß
R.Schmitt