source

Excel에서 프로그래밍 방식으로 활성 워크북 숨기기

bestscript 2023. 9. 17. 17:36

Excel에서 프로그래밍 방식으로 활성 워크북 숨기기

워크북을 기반으로 VBA 프로젝트를 진행하고 있습니다.코드는 새로운 워크북을 열고 외부 API를 호출하여 이 새로운 워크북의 여러 워크시트에 많은 데이터를 다운로드하고 삽입합니다.화면 업데이트를 비활성화했습니다(Application.Screenupdating = False처음에는 API가 다른 워크북의 데이터를 백그라운드에서 다운로드하는 동안 화면이 원본 워크북에 초점을 유지합니다.그러나 API가 데이터를 삽입하면 화면이 새 워크북으로 전환됩니다.어떻게 하면 이런 일이 일어나지 않게 할 수 있을까요?감사합니다!

활성 워크북을 숨길 수 있는 방법은 다음과 같습니다.

ActiveWorkbook.Windows(1).Visible = False

교체해야 할 수도 있습니다.ActiveWorkbook해당 워크북이 활성 워크북이 아닐 경우 또는 다음과 같은 루프를 추가할 경우 적절한 참조를 통해For i = 1 To ActiveWorkbook.Windows.Count워크북에 여러 개의 창이 있는 경우.

ShowWindow API 기능을 사용해 볼 수 있습니다.

Public Declare Function ShowWindow Lib "user32.dll" _
    (ByVal HWND As Long, ByVal nCmdShow As Long) As Long

Const SW_HIDE as Long = 0
Const SW_SHOW as Long = 5

ShowWindow otherWorkbookApplication.Hwnd, SW_HIDE

'Your code here

ShowWindow otherWorkbookApplication.Hwnd, SW_SHOW

또는 LockWindowUpdate API 기능(Chip Pearson, http://www.cpearson.com/excel/vbe.aspx) 덕분에:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal ClassName As String, ByVal WindowName As String) As Long

Private Declare Function LockWindowUpdate Lib "user32" _
    (ByVal hWndLock As Long) As Long


Sub EliminateScreenFlicker()
    Dim VBEHwnd As Long

    On Error GoTo ErrH:

    Application.VBE.MainWindow.Visible = False

    VBEHwnd = FindWindow("wndclass_desked_gsk", _
        Application.VBE.MainWindow.Caption)

    If VBEHwnd Then
        LockWindowUpdate VBEHwnd
    End If

    '''''''''''''''''''''''''
    ' your code here
    '''''''''''''''''''''''''

    Application.VBE.MainWindow.Visible = False
ErrH:
    LockWindowUpdate 0&
End Sub

화면 업데이트를 다시 켜기 전에 대상 워크북을 저장하고 닫거나 원래 워크북을 선택해야 합니다.

하위 개인 정보 숨기기()
디미
이상한 일이 발생한 경우 '다음 오류 재개 시'
i = 1에서 Windows로.카운트
'디버그.Windows(i)를 인쇄합니다.보이는
'디버그.Windows(i)를 인쇄합니다.자막
Windows(i)인 경우.자막 = "Personal.XLSB" 그러면
Windows(i).보이는 = 거짓
오류 발생 시 0으로 이동
종료 기간
종료 이프
다음 i
끝 서브

언급URL : https://stackoverflow.com/questions/11354456/hiding-active-workbook-programmatically-in-excel