Frage

Während Abfragen geschrieben in MS Access 2007 Debuggen (Problem war das gleiche in allen früheren Versionen auch), ich werde die Abfrage ausführen und dann die Ergebnisse in Excel kopieren. Je nach Ergebnis, schalte ich Batch-Zugang um die Ergebnisse zu verfeinern und zurück in dem Entwurfsmodus der Abfrage gehen. An diesem Punkt, erhalte ich eine ärgerliche Warnung: you copied a large amount of data onto the clipboard. ...Do you want to save this data on the clipboard? Ich habe nie tun wollte.

Das Zwischenablage MS Office ist deaktiviert, so dass diese Funktion mit der Standard-Windows-Zwischenablage geschieht. Gibt es eine Möglichkeit die Warnung und übernehmen keine als Standard zu deaktivieren?

War es hilfreich?

Lösung

Es ist eine sehr einfache Lösung für dieses Problem. Die Warnmeldung erfolgt nur, wenn es eine große Menge an Material auf der Zwischenablage ist. Deshalb -. Sicherstellen, dass es nur eine geringe Menge an Sachen gibt es, bevor Sie schließen

Zum Beispiel in einem Makro Ich schrieb ich dies tun:

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

Die vorletzte Zeile (unmittelbar vor dem Ende) ist ein „Dummy“ - ein Befehl, um einfach mit einer sehr geringen Menge von Daten, die die aktuellen (BIG) Zwischenablage zu ersetzen. Es funktioniert.

Andere Tipps

Ich glaube, Sie können die MS-Zwischenablage deaktivieren. Versuchen Sie folgendes:

  1. Beenden Sie alle Programme, die ausgeführt werden.
  2. Klicken Sie auf Start und dann auf Ausführen. Geben Sie regedit ein und klicken Sie auf OK.
  3. Sie in dem Registrierungs-Editor auf den folgenden Unterschlüssel (Ordner) wählen: HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General
  4. Auf dem Menü Bearbeiten auf Neu, und klicken Sie auf DWORD-Wert. Mit Neuer Wert # 1 ausgewählt ist, geben AcbControl, und drücken Sie die Eingabetaste.
  5. Sie im Menü Bearbeiten auf Ändern. Im DWORD-Wert bearbeiten Dialogfeld klicken Sie auf Dezimal unter Basis. Geben Sie 1 in das Feld Wert ein. Klicken Sie auf OK und beenden Sie den Registrierungs-Editor.

Hinweis: Sie können nicht deaktivieren (oder aktivieren), um die Office-Zwischenablage nur für ein einzelnes Office-Programm durch Bearbeiten der Registrierung.

Hier ist der MS KB-Artikel

Sie könnten das OnClose-Ereignis des Formulars eingerichtet, um die Zwischenablage zu löschen.

Setzen Sie den folgenden Code in ein Modul in Ihrer Datenbank.

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

Dann in dem Close-Ereignis des Formulars Verwendung:

EmptyClipboard

Nach meiner Erfahrung, erhalten Sie nur diese Nachricht, wenn Sie eine Anwendung schließen. Schließen Sie Excel vor der Rückkehr zugreifen? Wenn ja, schließen Sie es nicht und sehen Sie, wenn Sie nicht mehr die Meldung erhalten.

EDIT nach Anweisungen zur Herstellung des Fehlers versucht:

Der einzige Weg, um die Fehlermeldung zu vermeiden, ist Benachrichtigungen vor dem Betreten der Entwurfsansicht zu deaktivieren, wie in:

  DoCmd.SetWarnings False

Und Sie würden wollen, dass es wieder zu aktivieren, nachdem Sie mit Ihrer Bearbeitung fertig sind.

Aber es gibt keinen Ort, um diesen Code auszuführen, da Sie nur die Access-Benutzeroberfläche mit einer Abfrage zu bearbeiten.

Ich verstehe nicht ganz, Warum Diese Warnung wird als ein Problem. Vielleicht sind Sie einfügen, geht zurück zur Entwurfsansicht, die Kriterien zu ändern, wieder zu laufen, Einfügen wieder? Wenn ja, SetWarnings ausschalten könnte den Trick tun.

Wenn Sie es wollten automatisch geschehen, könnten Sie möglicherweise das Screen.ActiveDatasheet-Objekt verwenden, dies zu tun. Was würden Sie wollen, zu tun, ist, eine Funktion schreiben:

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

... dann, wenn Sie Ihre Abfrage in der Datenblattansicht zu öffnen, in dem Direkt-Fenster, geben Sie diese beiden Zeilen:

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

Sie können auch sicher schreiben Code, der dies für Sie einrichtet.

Eine Anmerkung - es funktioniert nicht „kleben“ für das Objekt Screen.ActiveDatasheet beim Öffnen oder ein anderes schließen. Es gilt nur für das Datenblatt, das aktiv ist, wenn Sie die Ereignisaktionen zuweisen.

Für Excel:

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

Sie gleiche für Access

Application.CutCopyMode = False

Ich laufe in dieses Problem die ganze Zeit. Es scheint dumm zu haben, dies zu tun, aber die folgende Lösung tötet es tot.

' 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 nicht alle Zwischenablage kopieren deaktivieren (wie von einem anderen Plakat angegeben)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top