VBA CopyPicture在锁定屏幕上失败(“错误1004无法清空剪贴板”)

时间:2019-09-04 15:11:33

标签: excel vba ms-error-1004

我有一个简单的VBA代码,可以使用CopyPicture复制范围(某些图表和表格)并将其另存为.gif文件。解锁屏幕后,一切正常,但是锁定时,Excel会不时抛出1004错误:“无法清空剪贴板”(大约40%的尝试)。

我想我已经尝试了所有方法:
-在类似线程中给出的每个解决方案: CopyPicture method of range class failed - sometimes
-等待5秒并尝试重复(Application.Wait (Now + TimeValue("00:00:05")))来进行一些错误处理
-将屏幕更新转换为真实的Application.Screenupdating=True
-使用此线程中提供的一些解决方案清除剪贴板: How to Clear Office Clipboard with VBA
但是没有用。

一些示例代码:

Function print(ByVal wb As Workbook, ByVal path As String, ByVal name As String)

Dim RNG as Range
Dim chtObj As ChartObject
sFile = path & name

Application.EnableEvents = False

Set RNG = Sheets(1).Range("A1:M50")
wb.Activate
Application.CutCopyMode = False
With RNG  
    .CopyPicture Appearance:=xlScreen, Format:=xlBitmap  **<-- this is where code fails**
    Set chtObj = ActiveSheet.ChartObjects.Add( _
    .Left, .top, .Width, .Height)
    chtObj.Chart.ChartArea.Format.Line.Visible = msoFalse
End With

chtObj.Chart.Paste
Application.CutCopyMode = False
chtObj.Chart.Export sFile
chtObj.Delete

Application.EnableEvents = True
End Function

我正在使用Windows10和Excel2013。

我正在考虑通过循环执行此函数直到它通过来做一些丑陋的解决方法,但这是我最后要做的事情;)
有什么提示吗?

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的麻烦,并通过以下解决方法解决了问题:使用https://sourceforge.net/projects/winkeylock/

这样的键盘和鼠标阻止程序无法锁定屏幕