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
'source' 카테고리의 다른 글
| UINavigationBar [iOS 7]에서 왼쪽, 오른쪽 UIBarButton 항목의 빈 공간을 편집하는 방법 (0) | 2023.09.17 |
|---|---|
| 현재 날짜보다 30일 전에 얻는 방법은? (0) | 2023.09.17 |
| AJAX로 부트스트랩 팝업 콘텐츠를 로드합니다.이것이 가능합니까? (0) | 2023.08.28 |
| ASP에서 긴 폴링 AJAX 요청을 수행하는 방법.NET MVC? (0) | 2023.08.28 |
| Azure Powershell 세션이 만료되었는지 탐지하는 방법은 무엇입니까? (0) | 2023.08.28 |