Как реализовать многопоточность и другие специфические вопросы в vba - PullRequest
1 голос
/ 31 августа 2010

У меня есть электронная таблица с 25 листами. В некоторых листах, в частности 6,7,13,17,18,19, я заполняю их значениями базы данных. В некоторых листах я заполняю данные двух таблиц. Теперь мне нужно создать кнопку, которая будет выполнять следующую операцию. На событии нажатия кнопки мне нужно пройти через все листы и посмотреть, заполнен ли какой-либо лист. Если он заполнен, скопируйте это содержимое в файл. Я уже реализовал копирование содержимого одного листа в файл.

Вопрос 1) Я не могу понять, как сделать для нескольких файлов.

Вопрос 2) Как записать, что определенный лист заполнен двумя значениями таблицы. Так как мне понадобится сделать один файл на таблицу.

Вопрос 3) Самое главное, что это займет много времени, поэтому я хочу ускорить свои операции, поэтому я хочу сделать многопоточность. Любой другой способ улучшить скорость был бы великолепен.

1 Ответ

0 голосов
/ 01 сентября 2010

Слишком много времени занимает программа, считывающая данные из Excel. Это, вероятно, самая частая причина жалоб на скорость.
Чтобы минимизировать эти издержки, вам нужно передавать как можно больший блок данных при каждом чтении.
В VBA вы делаете это, присваивая диапазон варианту:
Dim vArr as variant<br> vArr=Range("A1:Z5000")
Теперь vArr будет содержать двумерный массив из 26 столбцов по 5000 строк.

При использовании .NET через Interop этот метод еще более важен, поскольку временные затраты даже больше, чем у VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...