이미 열려 있는 다른 대규모 Excel 스프레드시트와 함께 열 때 VBA 지연이 있는 Excel 2010 스프레드시트가 발생하는 이유는 무엇입니까?

이미 열려 있는 다른 대규모 Excel 스프레드시트와 함께 열 때 VBA 지연이 있는 Excel 2010 스프레드시트가 발생하는 이유는 무엇입니까?

VBA를 통해 열 때 시작 페이지를 제외한 모든 워크시트를 닫고 사용자 이름을 확인하고 SQL 테이블과 교차 확인하여 사용자 기록을 다시 가져오는 상대적으로 작은(~100K) Excel 2010 스프레드시트가 있습니다. 그들의 허가.

몇 개의 셀이 rangeUserName, rangeCurrentUser, rangeSystemAccess 등으로 업데이트되었습니다.

다른 대형 스프레드시트(vba도 포함)가 있을 때 이 통합 문서를 열면 여는 데 약 30~60초가 걸리고, 다른 통합 문서가 열려 있지 않으면 5초 미만이 걸립니다.

왜 이런거야?

답변1

기본적으로 Excel은 단일 EXCEL.EXE 프로세스 내에서 각 파일을 엽니다. Windows 작업 관리자의 프로세스 탭에서 이를 볼 수 있습니다.

따라서 계속해서 파일을 열면 해당 프로세스 내에서 경합이 발생할 수 있습니다. 결국에는 메모리가 부족해 속도가 느려지거나 충돌하게 됩니다.

이를 방지하려면 후속 Excel 창을 별도의 EXCEL.EXE 프로세스로 시작할 수 있습니다. 시작 메뉴에서 Excel을 선택하는 동안 Shift 키를 누르거나 작업 표시줄에서 Excel을 클릭하면 됩니다. 별도의 프로세스로 시작되면 Windows는 리소스를 더 잘 관리하는 것 같습니다. 비활성 프로세스를 가상 메모리로 교체한다고 생각합니다.

Excel 2013의 경우 게임이 좀 더 어려워졌습니다. 확인 창이 나타날 때까지 Shift + Alt를 누르고 있어야 합니다.

저는 모든 Excel 창을 이런 방식으로 여는 경향이 있습니다. 특히 대용량 파일, VBA 코드, 피벗 테이블, 외부 데이터 또는 추가 기능으로 작업하는 경우 더욱 그렇습니다. 우선 리소스 문제를 방지할 뿐만 아니라 충돌이나 정지가 발생하는 경우 한 번에 모든 작업을 잃는 것이 아니라 한 창에서만 작업을 잃는다는 의미입니다.

관련 정보