Самый быстрый (и безопасный) способ создания 1300 книг?

У меня есть книга с некоторыми данными, которую я хочу фильтровать, а затем сохранять отфильтрованные данные в новую книгу. Функция выглядит так:

Sub bleh() For Each i In Number ~~ filter, copy, paste, save ~~ Next i End Sub 

Помимо оптимизации кода, быстрее и безопаснее

  1. сохранить каждый рабочий лист в качестве новой рабочей книги на каждой итерации
  2. сохранить каждый рабочий лист в текущей книге и вырезать всю книгу в отдельные книги в конце?

Или может быть что-то еще?

Спасибо за ваш вклад.

1300 файлов? Забудьте VBA, забудьте даже о взаимодействии Excel.

Я бы пошел с некоторыми C # или VB.NET и использовал OpenXML для работы с структурой файла, асинхронно генерировал 1300 документов OpenXML (например, книги) в памяти (надеюсь, что на листе не сотни тысяч строк данных) а затем, как только у вас есть все, что вам нужно знать, выполните итерацию всех этих объектов книги и сохраните их на диск последовательно (возможно, показывая индикатор выполнения или что-то еще). Создание асинхронного ввода-вывода ни в коем случае не поможет.

Каждая запись файла будет обернута внутри блока try/catch и любое исключение, возникшее в процессе, будет обработано путем регистрации достаточной информации, чтобы позже идентифицировать пропущенные листы (может быть выведено в заблокированное текстовое поле под этим индикатором выполнения), а затем перемещение чтобы попробовать следующий.


Выполнение этого в VBA будет работать вечно: дать каждой книге 4 секунды, которые будут созданы, сохранены и закрыты – ваш макрос будет работать не менее 5 200 секунд, что составляет почти полтора часа.

Interesting Posts

Как открыть файл, который открывается в другом приложении

Как вы группируете Excel PivotChart по столбцу, не выбранному в категории?

Код VBA работает правильно при отладке (F8), но ведет себя по-разному (неустранимый путь) при запуске через кнопку

Увеличьте значение ячейки, которое содержит число и текст VBA

Как скопировать конкретные столбцы в определенном порядке с одного листа на другой?

Excel Macro: вставка столбца и копирование формулы в него из соседнего столбца

Как скопировать максимальное значение данных ячейки с одной вкладки на другую вкладку автоматически с помощью формулы Excel

Ошибка 2042 («Н / Д») в функции Excel VLookup ()

Экспорт данных из базы данных с прямой ссылкой на скачивание

Сохраните копии как .PDF & .xlsx

Макрос VBA, который фильтрует по месяцам, вставляет данные за этот месяц только на другом листе

Excel – получение данных из ячеек со всех листов, если текст соответствует

Excel = если условный вопрос

Зацикливание по строкам, копирование значений ячейки на разные рабочие листы

VBA: деление значения непосредственно на ячейку является целым числом

Давайте будем гением компьютера.