Domanda

Durante il debug delle query scritte in MS Access 2007 (il problema era lo stesso anche in tutte le versioni precedenti), eseguirò la query e copierò i risultati in Excel. A seconda dei risultati, cambio batch in Access per perfezionare i risultati e tornare alla modalità di progettazione della query. A questo punto, ricevo un fastidioso avvertimento: hai copiato una grande quantità di dati negli appunti. ... Vuoi salvare questi dati negli Appunti? Non ho mai voluto farlo.

Gli Appunti di MS Office sono disabilitati, quindi questa funzione è disponibile con gli Appunti di Windows standard. C'è un modo per disabilitare l'avviso e assumere No come predefinito?

È stato utile?

Soluzione

C'è una soluzione molto semplice a questo. Il messaggio di avviso viene visualizzato solo se negli Appunti è presente una grande quantità di elementi. Pertanto, assicurati che ci sia solo una piccola quantità di roba prima di chiudere.

Ad esempio, in una macro che ho scritto faccio questo:

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

La penultima riga (immediatamente prima della chiusura) è un "fittizio" - un comando per sostituire semplicemente gli appunti attuali (BIG) con una quantità molto piccola di dati. Funziona.

Altri suggerimenti

Penso che potresti dover disabilitare gli Appunti di MS. Prova questo:

  1. Chiudi tutti i programmi in esecuzione.
  2. Fai clic su Start, quindi su Esegui. Digita regedit e fai clic su OK.
  3. Nell'editor del Registro di sistema, fare clic per selezionare la seguente sottochiave (cartella): HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General
  4. Dal menu Modifica, scegliere Nuovo e fare clic su Valore DWORD. Con Nuovo valore n. 1 selezionato, digitare AcbControl e quindi premere INVIO.
  5. Nel menu Modifica, fare clic su Modifica. Nella finestra di dialogo Modifica valore DWORD, fare clic su Decimale in Base. Digitare 1 nella casella Dati valore. Fai clic su OK e chiudi l'Editor del Registro di sistema.

NOTA: non è possibile disabilitare (o abilitare) gli Appunti di Office solo per un singolo programma di Office modificando il registro.

Ecco l'articolo l'articolo di MS KB

È possibile impostare l'evento OnClose del modulo in modo da cancellare gli Appunti.

Inserisci il codice seguente in un modulo nel tuo database.

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

Quindi, nell'evento Chiudi del modulo, utilizzare:

EmptyClipboard

Nella mia esperienza, ricevi questo messaggio solo quando chiudi un'applicazione. Chiudi Excel prima di tornare ad Access? In tal caso, non chiuderlo e vedere se non ricevi più il messaggio.

MODIFICA dopo aver provato le istruzioni per produrre l'errore:

L'unico modo per evitare il messaggio di errore è disattivare le notifiche prima di accedere alla vista di progettazione, come in:

  DoCmd.SetWarnings False

E vorresti riattivarlo dopo aver terminato la modifica.

Ma non c'è posto per eseguire questo codice, dato che stai solo usando l'interfaccia utente di Access per modificare una query.

Non capisco bene perché questo avviso è considerato un problema. Forse stai incollando, tornando alla vista di progettazione, cambiando criteri, eseguendo di nuovo, incollando di nuovo? In tal caso, disattivare SetWarnings potrebbe fare il trucco.

Se vuoi che ciò accada automaticamente, puoi concepibilmente utilizzare l'oggetto Screen.ActiveDatheet per farlo. Quello che vorresti fare è scrivere una funzione:

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

... quindi quando apri la query in visualizzazione foglio dati, nella finestra immediata, digita queste due righe:

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

Potresti anche scrivere del codice che lo configura per te.

Una nota: non " stick " per l'oggetto Screen.ActiveDatheet quando si apre o si chiude uno diverso. Si applica solo al foglio dati attivo quando si assegnano le azioni dell'evento.

Per Excel:

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

Fai lo stesso per Access

Application.CutCopyMode = False

Ho riscontrato questo problema continuamente. Sembra sciocco doverlo fare, ma la seguente soluzione lo uccide morto.

' 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 non disattiva la copia di tutti gli appunti (come indicato da un altro poster)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top