У меня есть рабочая книга Excel с макросами, которая открывает серию файлов MSProject, применяет фильтры к определенному столбцу и копирует части видимого диапазона в Excel. Код для операции копирования выглядит следующим образом:Копирование информации MSProject в Excel
For Each Task In ActiveSelection.Tasks
If Not Task Is Nothing Then
TargetWS.Cells(Row, 3) = Task.PercentComplete/100
TargetWS.Cells(Row, 4) = Task.Name
TargetWS.Cells(Row, 5) = Task.Start
TargetWS.Cells(Row, 6) = Task.Finish
TargetWS.Cells(Row, 7) = Task.BaselineFinish
Row = Row + 1
End If
Next Task
По существу, я пробегаем по каждой строке в отфильтрованной диапазоне и копирование каждой колонки по одному. Как вы можете себе представить, это занимает много времени.
Я надеюсь заменить этот итерационный метод стандартным набором действий, которые я бы использовал в Excel VBA: сначала определите & последние строки, затем используйте одно действие копирования для каждого столбца, который я хочу. Это значительно сократит количество действий копирования, необходимых для выполнения задачи, что должно обеспечить увеличение скорости.
В Excel VBA, код, который я хочу, будет выглядеть примерно так, определив последнюю строку:
TargetWS.Range("A2:" & LastRow).Copy Destination:= (destination cells)
Я знаю, как найти последнюю видимую задачу в проекте, но не знаком с выбора диапазона. Может ли кто-то заполнить пробелы?
Спасибо!
Одна из проблем, с которой вы столкнетесь с этим методом, заключается в том, что для копирования столбца данных из Project сначала необходимо убедиться, что он находится в активной таблице. Если вы не можете быть на 100% уверены, что представление не изменилось, вам нужно создать/изменить таблицу с помощью кода. –