Мне нужно экспортировать обработанные данные из мастер-файла в большое количество выходных файлов ".xlsx".
В мастер-файле я запускаю код VBA, чтобы повторить следующее:
1). вставить новый лист.
2). поместите обработанные выходные данные в этот недавно вставленный лист.
3). переместите рабочий лист в новую рабочую книгу и сохраните эту рабочую книгу.
После того, как таким образом было экспортировано чуть более 2400 листов, Excel отображает сообщение об ошибке, в котором говорится, что «не хватает памяти для выполнения этого действия», и предлагается использовать 64-разрядную версию Excel.
Я перешел на 64-битный Excel. Такое же сообщение появилось после того, как было произведено более или менее одинаковое количество выходных файлов.
Поскольку 64-разрядное программное обеспечение позволяет значительно увеличить объем памяти, если 64-разрядная версия и 32-разрядная версия исчерпывают память в одной точке прогресса, мне кажется, что проблема могла быть вызвана не нормальной использование памяти.
Может быть, это вызвано чем-то вроде повторного вызова fopen () без вызова fclose () в C.
Скелет моего кода выглядит так:
Cur_Path = ActiveWorkbook.Path
Application.ScreenUpdating = False
For r = 12 To 4653
' Add Blank sheet
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
' Export Sheet
Export_fname = Cur_Path & "\" & ws.Name & ".xlsx"
ws.Move
ActiveWorkbook.SaveAs Filename:=Export_fname, FileFormat _
:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Next r
Application.ScreenUpdating = True
Отладчик показал, что проблема возникла при запуске строки "ws.Move".
Кто-нибудь, пожалуйста, дайте мне знать, что не так с моим кодом, или предложите обходной путь, чтобы преодолеть это (на первый взгляд) ограничение в 2433 листа?