【问题标题】:Disable warning: You copied a large amount of data onto the clipboard禁用警告:您将大量数据复制到剪贴板上
【发布时间】:2010-10-13 08:24:59
【问题描述】:

在调试用 MS Access 2007 编写的查询时(问题在所有以前的版本中也一样),我将运行查询,然后将结果复制到 Excel 中。根据结果​​,我将批处理切换到 Access 以优化结果并返回查询的设计模式。在这一点上,我收到了一个恼人的警告:you copied a large amount of data onto the clipboard. ...Do you want to save this data on the clipboard? 我从来不想这样做。

MS Office 剪贴板已禁用,因此此功能在标准 Windows 剪贴板中发生。有没有办法禁用警告并假设 No 作为默认值?

【问题讨论】:

    标签: ms-access vba ms-office ms-access-2007


    【解决方案1】:

    有一个非常简单的解决方案。只有在剪贴板上有大量内容时才会出现警告消息。因此 - 确保在关闭之前那里只有少量的东西。

    例如,在我编写的宏中,我这样做:

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("iostatZd15.1").Activate
    ActiveWindow.WindowState = xlNormal
    ActiveSheet.Range("A1").Copy
    ActiveWindow.Close
    

    倒数第二行(紧接收盘前)是一个“虚拟”命令——用非常少量的数据简单地替换当前 (BIG) 剪贴板的命令。它有效。

    【讨论】:

      【解决方案2】:

      我认为您可能必须禁用 MS 剪贴板。试试这个:

      1. 退出所有正在运行的程序。
      2. 单击开始,然后单击运行。输入 regedit 并点击 OK。
      3. 在注册表编辑器中,单击以选择以下子项(文件夹):HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General
      4. 在“编辑”菜单上,指向“新建”并单击“DWORD 值”。选择新值 #1 后,键入 AcbControl,然后按 ENTER。
      5. 在“编辑”菜单上,单击“修改”。在“编辑 DWORD 值”对话框中,单击“基数”下的“十进制”。在数值数据框中键入 1。单击“确定”并退出注册表编辑器。

      注意:您不能通过修改注册表来仅为单个 Office 程序禁用(或启用)Office 剪贴板。

      这是MS KB article

      【讨论】:

      • 感谢您的信息。办公室剪贴板已经被禁用,因为我很少复制多个东西。我将编辑问题以明确说明。
      【解决方案3】:

      您可以设置表单的 OnClose 事件来清除剪贴板。

      将以下代码放入数据库中的模块中。

      Private Declare Function apiOpenClipboard Lib "User32" Alias
      "OpenClipboard" (ByVal hWnd As Long) As Long
      
      Private Declare Function apiEmptyClipboard Lib "User32" Alias
      "EmptyClipboard" () As Long
      
      Private Declare Function apiCloseClipboard Lib "User32" Alias
      "CloseClipboard" () As Long
      
      Function EmptyClipboard()
        If apiOpenClipboard(0&) <> 0 Then
          Call apiEmptyClipboard
          Call apiCloseClipboard
        End If
      End Function
      

      然后在表单的关闭事件中使用:

      EmptyClipboard
      

      【讨论】:

      • 感谢您的建议,但我正在直接运行查询;没有可以附加任何事件的表格。但也许我可以有一个表单,只要 Access 获得焦点,就可以清除剪贴板。嗯。
      【解决方案4】:

      根据我的经验,只有在关闭应用程序时才会收到此消息。您是否在返回 Access 之前关闭 Excel?如果是这样,请不要关闭它,看看您是否不再收到该消息。

      在尝试产生错误的说明后编辑:

      避免错误消息的唯一方法是在进入设计视图之前关闭通知,如下所示:

        DoCmd.SetWarnings False
      

      您希望在完成编辑后重新打开它。

      但没有地方运行此代码,因为您只是使用 Access UI 来编辑查询。

      我不太明白为什么这个警告被认为是一个问题。也许您正在粘贴、返回设计视图、更改标准、再次运行、再次粘贴?如果是这样,关闭 SetWarnings 可能会奏效。

      如果您希望它自动发生,您可以使用 Screen.ActiveDatasheet 对象来执行此操作。你想做的是写一个函数:

        Public Function ChangeWarnings(bolSetting As Boolean) As Boolean
          DoCmd.Setwarnings bolSetting
        End Function
      

      ...然后当您在数据表视图中打开查询时,在“立即”窗口中,键入以下两行:

        Screen.ActiveDatasheet.OnActivate = "=ChangeWarnings(False)"
        Screen.ActiveDatasheet.OnDeactivate = "=ChangeWarnings(True)"
      

      您当然也可以编写代码来设置它。

      一个注意事项——当打开或关闭另一个对象时,它不会“粘”在 Screen.ActiveDatasheet 对象上。它仅适用于分配事件操作时处于活动状态的数据表。

      【讨论】:

      • 嗨,大卫 - 我当然尊重你的意见 - 但不,我没有关闭 Excel。打开 Access,运行查询,复制结果,打开 excel,粘贴结果,选择 Access 并选择设计视图,得到警告。
      【解决方案5】:

      对于 Excel:

      Fexcel = New Microsoft.Office.Interop.Excel.Application
      Fexcel.DisplayAlerts = False
      

      对 Access 执行相同操作

      【讨论】:

      • 该消息来自 Access,因此这将无效。
      【解决方案6】:

      Application.CutCopyMode = False

      【讨论】:

      • 小心;这将禁用所有剪贴板复制;提问者说他​​只想“根据结果”做这个。
      【解决方案7】:

      我一直遇到这个问题。必须这样做似乎很愚蠢,但以下解决方案将其杀死。

      ' Copy something small into the clipboard
      Range("A1").Copy
      
      ' Turn off CutCopyMode i.e., the "crawling ants"
      ' Application.CutCopyMode = False solves a lot of problems, I do it as a precaution after I copy anything
      Application.CutCopyMode = False
      

      CutCopyMode = FALSE 不会关闭所有剪贴板复制(如另一张海报所述)

      【讨论】:

        猜你喜欢
        • 2019-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        相关资源
        最近更新 更多