VBA와 함께 32 비트 2013 Excel을 광범위하게 사용하고 있습니다. 하드웨어 그래픽 가속 및 COM 추가 기능을 사용할 수 없도록 설정했지만 아직 다음과 같은 문제로 어려움을 겪고 있습니다.Excel VBA : 메모리가 두 번째 가져 오기에서 제한을 초과합니다.
수식이없는 다른 큰 통합 문서의 내용을 셀에 가져 오는 중입니다 (~ 3MB Excel 파일). 문제가되는 Excel 통합 문서 첫 번째 시도에서 - 내용을 아직 가져 오지 않았 으면 가져 오기가 성공합니다.
Application.Workbooks(F_Home).Activate
Workbooks(F_Home).Sheets(Sheet1).Visible = xlSheetVisible
...
Application.Workbooks(F_Source).Activate
Workbooks(F_Source).Sheets(S_Source).Cells.Copy Destination:=Workbooks(F_Home).Sheets(Sheet1).Cells
Application.Workbooks(F_Home).Activate
F_Home이 문제가 Excel 통합 문서이며 F_Source 다음 우리가 가져 오는 내용에 통합 문서입니다 작동이 처음 수행 할 때, 그리고 :. 다음 코드와 유사한 VBA를 통해 컨텐츠를 수입하고 파일을 저장하고 닫은 다음 파일을 다시 열고 두 번째 시도하십시오. F_Home 통합 문서가 F_Source 내용을 복사하는 줄에 메모리 부족 오류 (이 작업을 완료하는 데 필요한 메모리가 부족합니다 ...)가 발생하여 두 번째로 내용을 가져 오려고하면 (내용을 이미 가져온 경우) F_Home 통합 문서가 충돌합니다. F_ 홈.
프로세스 탐색기를 사용하여 Excel 프로세스는 대개 가상 메모리 크기에서 약 600mb - 700mb를 실행하지만 VBA 스크립트를 실행하여 두 번째 내용을 가져올 때 가상 메모리 크기가 갑자기 4GB로 증가합니다 이것은 600mb - 700mb 범위에 머물러있는 처음으로 발생하지 않습니다.) 이 문제를 어떻게 해결해야합니까? 파일의 타임 스탬프가 사용되고 VBA를 통해 파일을 저장하면 일부 사용자를 혼란스럽게하기 때문에 내용을 두 번 가져 오기 전에 파일을 저장하는 등의 해결 방법을 사용할 수 없습니다.
도움 주셔서 감사합니다.
통합 문서에서 가져올 내용이없는 수식이 없습니다. – haans
문제는 1048576 * 16384 셀을 복사한다는 사실에서 비롯됩니다. 그게 얼마나 큰지 알지? 정말로해야합니까? 데이터가있는 범위 만 복사 할 수 있으며 계산 속도가 훨씬 빨라지고 계산 비용이 적게 듭니다. – Masoud
또한 수식이없는 경우 복사/붙여 넣기 대신 범위에 할당하는 것이 좋습니다. – Masoud