Also ich hab ja leider keine Lösung, finde aber, dass der Code lesbarer sein könnte. Insbesondere die Geschichte mit dem Array scheint mir von hinten durch die Brust. Ja.. und vielleicht könnte auch ein zusätzliches DoEvents helfen. Ich kann das aber nicht testen. Wenn man wüsste, was genau AccessibleChildren tut, wäre man vielleicht auch ein Stück weiter...
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function AccessibleChildren Lib "oleacc" ( _
ByVal paccContainer As Office.IAccessible, _
ByVal iChildStart As Long, ByVal cChildren As Long, _
ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Public Const mVBA7 As Long = 1
#Else
Private Declare Function AccessibleChildren Lib "oleacc" ( _
ByVal paccContainer As Office.IAccessible, _
ByVal iChildStart As Long, ByVal cChildren As Long, _
ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Public Const mVBA7 As Long = 0
#End If
Public Sub EvRClearOfficeClipBoard()
Dim cmnB, IsVis As Boolean, j As Long, Arr As Variant
On Error GoTo Fehler
Set cmnB = Application.CommandBars("Office Clipboard")
IsVis = cmnB.Visible
If Not IsVis Then
cmnB.Visible = True
DoEvents
End If
For j = 1 To IIf(mVBA7 = 0, 4, 7)
AccessibleChildren cmnB, Choose(j, 0, 3, 0, 3, 0, 3, 1), 1, cmnB, 1
DoEvents
Next
On Error Resume Next
cmnB.accDoDefaultAction IIf(mVBA7 = 0, 2&, 0&)
On Error GoTo 0
Fehler:
Application.CommandBars("Office Clipboard").Visible = IsVis
End Sub
|