Word 2007 Macro - Zwischenablage in Variable speichern

Stuhl

Lt. Junior Grade
Registriert
Juni 2001
Beiträge
409
Hi,

ich möchte in word 2007 ein macro schreiben, was den Textinhalt meiner Zwischenablage unformatiert in eine Variable speichert die ich dann ausgeben kann.

auf MSDN gibt das hier: http://support.microsoft.com/kb/82111/de

Wenn ich jedoch den VB Code nutze kommt eine Fehlermeldung dass ein end if fehlt. Selbst wenn ich noch ein end if einfüge (es gibt nämlich schon eins) funktioniert es nicht.

Ich kann den Fehler im Code nicht sehen, vielleicht könnt Ihr mir helfen.

Grüße
Stuhl

Declare Function CloseClipboard Lib "user32"() As Long
Declare Function GetClipboardData Lib "user32"(wFormat As Long) As Long
Declare Function OpenClipboard Lib "user32"(hwnd As Long) As Long

Declare Function GlobalLock Lib "kernel32"(h As Long) As Long
Declare Sub GlobalUnlock Lib "kernel32"(h As Long)
Declare Function lstrcpyA Lib "kernel32"(lpszDest$, lpsz2 As Long)As Long
Declare Function lstrlenA Lib "kernel32"(lpsz As Long) As Long
' **********************************************************************
Sub Main

hwnd = GetFocus
If (OpenClipboard(hwnd) <> 0) Then
h = GetClipboardData(1)
If (h <> 0) Then
lpStr = GlobalLock(h)
Clip$ = String$(lstrlenA(lpStr), "x")
r = lstrcpyA(Clip$, lpStr)
Clip$ = LTrim$(RTrim$(Clip$))
GlobalUnlock(h)
Else
Clip$ = "NULL"
End If
r = CloseClipboard
MsgBox Clip$
End Sub
 
Zwischen
End If und r = CloseClipboard fehlt ein End If.
Du fragst mit dem ersten If ab ob überhaupt etwas in der Zwischenablage ist und mit dem zweiten dann nochmal ob die Variable etwas enthält.
 
VIelen Dank.

Leider kommt dann einfach eine leere Box. Der Inhalt der Zwischenablage wird einfach nicht ausgelesen.

Woran könnte das liegen?

Danke
Stuhl
 
Setzt doch mal einen Haltepunkt bei h = GetClipboardData(1) und sieh dir an was in den Variablen steht.
Wenn der Punkt nie erreicht wird wird die Bedingung nie erfüllt.
Dann setzt du den Punkt gleich bei hwnd = GetFocus
 
...hab das Problem schon mit dem dataobject gelöst. Dazu musste ich allerdings MS Forms 2.0 Data Biobliothek manuell nachladen :( habe jetzt allerdings das problem, dass ich aus dem Text in der Stringvariable die Zeilenumbrüche entfernen muss und das krieg ich nicht hin..:(
 
Weißt du denn welche Zeichen als Zeilenumbruch verwendet werden?
Eigentlich müsste es Chr(13), Chr(10), Chr(13) & Chr(10) oder vbCrLf sein.
 
Zurück
Oben