تعطيل التحذير:لقد قمت بنسخ كمية كبيرة من البيانات إلى الحافظة
-
22-07-2019 - |
سؤال
أثناء تصحيح أخطاء الاستعلامات المكتوبة في 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 القياسية.هل هناك طريقة لتعطيل التحذير وافتراض لا كإعداد افتراضي؟
المحلول
وهناك حل سهل جدا لهذا. رسالة تحذير لا يحدث إلا إذا كان هناك كمية كبيرة من الاشياء في الحافظة. لذلك - تأكد من وجود كمية صغيرة فقط من الاشياء هناك قبل إغلاق
وعلى سبيل المثال، في ماكرو كتبت أفعل هذا:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("iostatZd15.1").Activate
ActiveWindow.WindowState = xlNormal
ActiveSheet.Range("A1").Copy
ActiveWindow.Close
ووالخط الثاني الماضي (مباشرة قبل وثيقة) هو "دمية" - أمر لمجرد استبدال (BIG) الحافظة الحالية مع كمية صغيرة جدا من البيانات. يعمل.
نصائح أخرى
أعتقد أنك قد تضطر إلى تعطيل حافظة MS.جرب هذا:
- قم بإنهاء أية برامج قيد التشغيل.
- انقر فوق ابدأ، ثم انقر فوق تشغيل.اكتب رجديت وانقر فوق موافق.
- في محرر التسجيل، انقر لتحديد المفتاح الفرعي (المجلد) التالي:
HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General
- في القائمة تحرير، أشر إلى جديد ثم انقر فوق قيمة DWORD.مع تحديد قيمة جديدة #1، اكتب AcbControl، ثم اضغط على ENTER.
- في القائمة تحرير، انقر فوق تعديل.في مربع الحوار تحرير قيمة DWORD، انقر فوق عشري ضمن Base.اكتب 1 في مربع بيانات القيمة.انقر فوق "موافق" وقم بإنهاء محرر التسجيل.
ملحوظة:لا يمكنك تعطيل (أو تمكين) حافظة Office لبرنامج Office واحد فقط عن طريق تعديل السجل.
هنا مقالة MS KB
هل يمكن تعيين الحدث عند_الإغلاق النموذج إلى مسح الحافظة.
ضع التعليمات البرمجية أدناه في وحدة نمطية في قاعدة البيانات.
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
في تجربتي، كنت فقط الحصول على هذه الرسالة عند إغلاق التطبيق. هل إغلاق Excel قبل عودته إلى الوصول؟ إذا كان الأمر كذلك، لا إغلاقه ومعرفة ما اذا كنت لم تعد تحصل على الرسالة.
وتحرير بعد محاولة تعليمات لإنتاج الخطأ:
والطريقة الوحيدة لتجنب رسالة الخطأ لإيقاف الإخطارات قبل الدخول طريقة عرض التصميم، كما في:
DoCmd.SetWarnings False
وكنت تريد تشغيله مرة أخرى بعد الانتهاء مع التحرير.
ولكن لا يوجد مكان لتشغيل هذا الرمز، منذ كنت فقط باستخدام واجهة المستخدم الوصول إلى تعديل استعلام.
وأنا لا أفهم تماما <م> لماذا م> يعتبر هذا التحذير مشكلة. ربما كنت لصق، يعود إلى طريقة العرض تصميم، وتغيير المعايير، تشغيلها مرة أخرى، لصق مرة أخرى؟ إذا كان الأمر كذلك، وتحول 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 عند فتح أو إغلاق واحدة مختلفة. فإنه لا ينطبق إلا على ورقة البيانات التي تنشط عند تعيين الإجراءات الحدث.
لإكسل:
Fexcel = New Microsoft.Office.Interop.Excel.Application
Fexcel.DisplayAlerts = False
هل نفسها من أجل الوصول
وApplication.CutCopyMode = خطأ
وأنا واجهت هذه المشكلة في كل وقت. يبدو سخيفا لديك للقيام بذلك، ولكن الحل التالي يقتل أنه ميت.
' 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 لا إيقاف نسخ جميع الحافظة (كما قال ملصق آخر)