AW: Copy Buffer auslesen
05.02.2014 21:28:21
Firmus
Hi Grissu,
mit dieser zusätzlichen Anforderung musst Du das Problem komplett anders angehen.
Die aktuelle Position im XLS-Blatt interessiert nicht mehr, sondern nur noch der
Inhalt der Zwischenablage (Clipboard).
Ich habe ein Beispiel - auch mit Hilfe von Tante Google + Grundkenntnissen realisiert.
Es wird dabei unterschieden, ob ein Bereich markiert und per CTRL-C/Copy in die Zwischenablage
gestellt wurde, oder ob diese komplett leer ist, bzw. kein Text,kein XLS-Range enthält.
Zwei Dinge sind dabei anzumerken:
1. Ein Bildausschnitt (z.B. mit SnippingTool) wird als "leer" erkannt (es ist kein Text da)
2. Text aus einer einfachen Zeile ( z.B. aus NOTEPAD) und eine XLS-Range können nicht unterschieden werden.
Für die Praxis: Falls ein Textfragment in der Zwischenablage ist UND in XLS nichts markiert und kopiert wurde, KANN es zu falschen Ergebnissen kommen.
Das auch noch zu bereinigen haben meine aktuellen Kenntnisse nicht ausgereicht.
VBA-Code zum Testen:
Option Explicit
Sub KopieClipboard()
Dim MyData As New DataObject
Dim strClip As Variant
Set MyData = Nothing
On Error Resume Next 'Standard Error-Routine abschalten, wg. FALLS Clipboard leer
MyData.GetFromClipboard
'kann zwischen einfachem Text und Cell-Range NICHT unterscheiden.
'Grafikausschnitte (SNAPtool) wird als falsch erkannt, ok.
If MyData.GetFormat(1) = True And Err = 0 Then
Range("b15").Select 'Test-Zielzelle
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else
MsgBox "kein TXT oder XLS-cells im Zwischenspeicher - exit."
Exit Sub
End If
On Error GoTo 0 'Standard Error-Routine wieder aktivieren.
End Sub
Lass von Dir hören.
Gruß
Firmus