Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 禁用警告:您已将大量数据复制到剪贴板上_Ms Access_Vba_Ms Office_Ms Access 2007 - Fatal编程技术网

Ms access 禁用警告:您已将大量数据复制到剪贴板上

Ms access 禁用警告:您已将大量数据复制到剪贴板上,ms-access,vba,ms-office,ms-access-2007,Ms Access,Vba,Ms Office,Ms Access 2007,在调试MS Access 2007中编写的查询时(问题在所有以前的版本中也是一样的),我将运行查询,然后将结果复制到Excel中。根据结果,我将batch切换到Access以优化结果并返回查询的设计模式。此时,我得到了一个恼人的警告:您将大量数据复制到了剪贴板上。。。是否要将此数据保存在剪贴板上?我从未想过要这样做 MS Office剪贴板已禁用,因此此功能将在标准Windows剪贴板上执行。有没有办法禁用警告并将“否”设为默认值?我认为您可能必须禁用MS剪贴板。试试这个: 退出正在运行的所有程

在调试MS Access 2007中编写的查询时(问题在所有以前的版本中也是一样的),我将运行查询,然后将结果复制到Excel中。根据结果,我将batch切换到Access以优化结果并返回查询的设计模式。此时,我得到了一个恼人的警告:
您将大量数据复制到了剪贴板上。。。是否要将此数据保存在剪贴板上?
我从未想过要这样做


MS Office剪贴板已禁用,因此此功能将在标准Windows剪贴板上执行。有没有办法禁用警告并将“否”设为默认值?

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

  • 退出正在运行的所有程序
  • 单击开始,然后单击运行。键入regedit并单击OK
  • 在注册表编辑器中,单击以选择以下子项(文件夹):
    HKey\u CURRENT\u USER\Software\Microsoft\Office\9.0\Common\General
  • 在“编辑”菜单上,指向“新建”,然后单击“DWORD值”。选择新值#1后,键入AcbControl,然后按ENTER键
  • 在“编辑”菜单上,单击“修改”。在“编辑DWORD值”对话框中,单击“基数”下的“十进制”。在值数据框中键入1。单击确定并退出注册表编辑器
  • 注意:您不能通过修改注册表仅为单个Office程序禁用(或启用)Office剪贴板


    根据我的经验,只有在关闭应用程序时才会收到此消息。是否在返回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对象时,它不会“粘住”Screen.ActiveDatasheet对象。它仅适用于分配事件操作时处于活动状态的数据表。

    您可以设置窗体的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
    
    对于Excel:

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

    对Access执行相同的操作

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

    例如,在我编写的宏中,我执行以下操作:

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

    最后的第二行(紧靠结束前)是一个“虚拟”命令—一个用非常少量的数据简单地替换当前(大)剪贴板的命令。它可以工作。

    Application.CutCopyMode=False

    我一直遇到这个问题。必须这样做似乎很愚蠢,但下面的解决方案会让它死掉

    ' 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不会关闭所有剪贴板复制(如另一张海报所述)

    谢谢您提供的信息。office剪贴板已经被禁用,因为我很少复制周围的多个内容。我将对问题进行编辑,以澄清这一点。嗨,大卫-我当然尊重你的意见-但不,我不会关闭Excel。打开Access,运行查询,复制结果,打开excel,粘贴结果,选择Access并选择设计视图,获取警告。感谢您的建议,但我正在直接运行查询;没有可以附加任何事件的表单。但也许我可以有一个表单,在Access获得焦点时清除剪贴板。嗯。消息来自Access,因此这不会有任何影响。小心;这将禁用所有剪贴板复制;提问者说他只想“根据结果”来做这件事。
    ' 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