문제

MS Access 2007에 작성된 쿼리를 디버깅하는 동안 (문제는 이전 버전에서도 동일) 쿼리를 실행 한 다음 결과를 Excel로 복사합니다. 결과에 따라 배치를 전환하여 결과를 개선하고 쿼리의 설계 모드로 돌아갑니다. 이 시점에서 나는 성가신 경고를받습니다. you copied a large amount of data onto the clipboard. ...Do you want to save this data on the clipboard? 나는 이것을하고 싶지 않았습니다.

MS Office Clipboard가 비활성화되어 표준 Windows 클립 보드 에서이 기능이 발생합니다. 경고를 비활성화하고 기본값으로 NO를 가정하는 방법이 있습니까?

도움이 되었습니까?

해결책

이것에 대한 매우 쉬운 해결책이 있습니다. 경고 메시지는 클립 보드에 많은 양의 물건이있는 경우에만 발생합니다. 그러므로 - 당신이 닫기 전에 소량의 물건 만 있는지 확인하십시오.

예를 들어, 매크로에서 나는 이것을 썼다 :

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

두 번째 라인 라인 (닫기 직전)은 "더미"입니다. 현재 (큰) 클립 보드를 매우 적은 양의 데이터로 바꾸는 명령입니다. 효과가있다.

다른 팁

MS 클립 보드를 비활성화해야 할 수도 있습니다. 이 시도:

  1. 실행중인 프로그램을 종료하십시오.
  2. 시작을 클릭 한 다음 실행을 클릭합니다. Regedit을 입력하고 확인을 클릭하십시오.
  3. 레지스트리 편집기에서 다음 하위 키 (폴더)를 선택하려면 클릭하십시오. HKey_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General
  4. 편집 메뉴에서 새로 가리키고 dword 값을 클릭하십시오. 새 값 #1을 선택한 상태에서 ACBControl을 입력 한 다음 Enter를 누릅니다.
  5. 편집 메뉴에서 수정을 클릭하십시오. DWORD 값 편집 대화 상자에서 기본 아래 소수점을 클릭하십시오. 값 데이터 상자의 1 형입니다. 확인을 클릭하고 레지스트리 편집기를 종료하십시오.

참고 : 레지스트리를 수정하여 단일 사무실 프로그램에 대해서만 사무실 클립 보드를 비활성화하거나 활성화 할 수 없습니다.

여기에 있습니다 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

그리고 편집 작업을 마친 후 다시 켜고 싶을 것입니다.

그러나 액세스 UI를 사용하여 쿼리를 편집하기 때문에이 코드를 실행할 장소는 없습니다.

이해가 안 돼요 이 경고는 문제로 간주됩니다. 아마도 당신은 붙여 넣고, 디자인보기로 돌아 가고, 기준을 바꾸고, 다시 달리기, 다시 붙여 넣을까요? 그렇다면, setwarnings를 끄면 트릭이 될 수 있습니다.

자동으로 발생하기를 원한다면 화면을 사용할 수 있습니다. 당신이하고 싶은 것은 기능을 작성하는 것입니다.

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

... 그런 다음 데이터 시트보기에서 쿼리를 열면 바로 즉시 창 에서이 두 줄을 입력하십시오.

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

당신은 또한 당신을 위해 이것을 설정하는 코드를 확실히 작성할 수 있습니다.

하나의 참고 - 화면의 경우 "고정"하지 않습니다. Activedatasheet 객체를 열거 나 닫을 때 객체를 닫습니다. 이벤트 작업을 할당 할 때 활성화 된 데이터 시트에만 적용됩니다.

Excel 용 :

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

액세스를 위해 똑같이하십시오

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는 모든 클립 보드 복사를 끄지 않습니다 (다른 포스터에서 언급 한대로)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top