2301_81468091 2023-12-12 05:09 采纳率: 33.3%
浏览 30
已结题

电脑锁屏时vba运行SAP,excel数据不能复制到SAP,没有方法解决了?

电脑不锁屏没有问题。锁屏时不能粘贴excel数据,也可以说粘贴的空白,代码就继续往下执行了。
怎么解决这个问题?
代码复制上来,提交总报错。搞个图片了

img

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-12 05:10
    关注

    引自强大而免费的微信小程序:皆我知道

    当电脑锁屏时,无法进行粘贴操作,这是由于锁屏后剪贴板被禁用所导致的。在VBA中,可以通过设置API来解决这个问题。

    首先,需要在代码开头添加以下声明:

    Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr
    Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPtr
    

    然后,在需要进行粘贴操作的代码前后添加以下代码:

    Dim hwnd As LongPtr
    hwnd = GetForegroundWindow() '获取当前活动窗口句柄
    OpenClipboard hwnd '打开剪贴板
    EmptyClipboard '清空剪贴板
    

    在粘贴操作完成后,添加以下代码:

    CloseClipboard '关闭剪贴板
    

    完整的代码如下:

    Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr
    Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPtr
    
    Sub PasteDataToSAP()
        Dim hh As Long
        Dim hwnd As LongPtr
        
        hh = Range("a2").CurrentRegion.Rows.Count
        
        hwnd = GetForegroundWindow()
        OpenClipboard hwnd
        EmptyClipboard
        
        '在此处添加粘贴操作的代码
        
        CloseClipboard
    End Sub
    

    注意:上述代码使用的是32位API声明,如果你的电脑是64位的,需要将代码中的Long改为LongPtr

    另外,还需要确保电脑的权限设置允许程序在锁屏状态下操作剪贴板。如果你没有权限修改这些设置,建议联系系统管理员进行配置。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月16日
  • 修改了问题 12月15日
  • 请回答用户的提问 12月12日
  • 创建了问题 12月12日

悬赏问题

  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 求帮看看那里的问题ssh项目报错
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统