Как перенести данные из Microsoft Project в Excel: от простого копирования до автоматизации VBA

Перенос данных из Microsoft Project в Excel — типичная задача для проектных менеджеров, аналитиков и финансовых специалистов. В Excel удобнее строить сводные отчёты, проводить дополнительный анализ или интегрировать проектные данные с другими системами (например, 1С или Power BI). Однако стандартные инструменты экспорта в MS Project часто ограничены: теряется форматирование, разбиваются связанные задачи или не переносятся пользовательские поля.

В этой статье разберём 5 способов переноса — от элементарного копирования до автоматизации через VBA, — а также покажем, как сохранить структуру диаграммы Ганта, ресурсы и базовые планы. Особое внимание уделим проблеме с датами в формате "дд.мм.гггг" при экспорте в старые версии Excel (2010 и ниже), которая ломает все временные расчёты.

1. Ручное копирование данных (быстро, но с ограничениями)

Самый простой метод — выделение ячеек в MS Project и вставка в Excel через буфер обмена (Ctrl+CCtrl+V). Он подходит для разовых операций с небольшими объёмами данных (до 500 строк). Однако у способа есть критические недостатки:

  • 🔹 Теряется форматирование: цвета задач, выделение критических путей, пользовательские стили.
  • 🔹 Разрываются связи между задачами (преемственность не переносится).
  • 🔹 Дата начинается с 1900 года в Excel, если не настроен региональный формат.
  • 🔹 Не переносятся заметки (Notes), вложения и базовые планы.

Чтобы минимизировать потери, перед копированием:

  1. Откройте в Project вид Задачи → Диаграмма Ганта.
  2. Нажмите Файл → Параметры → Дополнительно и установите флажок Копировать изображения при копировании в другие программы.
  3. Выделите нужные столбцы (зажмите Shift для выбора диапазона).

2. Экспорт через "Сохранить как" (Excel или CSV)

MS Project позволяет сохранить проект в форматах .xlsx или .csv через меню Файл → Сохранить как. Этот метод лучше ручного копирования, так как сохраняет структуру таблицы, но тоже имеет ограничения:

Формат Плюсы Минусы
.xlsx Сохраняет иерархию задач (подзадачи), часть форматирования Не переносит диаграмму Ганта, ресурсы и календари
.csv Универсальный формат для импорта в другие системы Теряет все формулы, связи и многоуровневые заголовки
.mpp.xml Сохраняет максимально полные данные (включая заметки) Требует дополнительной обработки в Excel (через Power Query)

Для экспорта в .xml:

  1. Выберите Файл → Сохранить как → Другие форматы.
  2. В списке типов файлов найдите XML-формат (*.xml).
  3. Откройте полученный файл в Excel через Данные → Получить данные → Из файла → Из XML.
Как исправить кодировку в CSV?

Если при открытии CSV в Excel вместо кириллицы отображаются "кракозябры", откройте файл через Блокнот, сохраните с кодировкой UTF-8, затем импортируйте в Excel через Данные → Из текста.

3. Использование отчётов MS Project (для диаграмм Ганта)

Если вам нужно перенести визуальное представление проекта (например, диаграмму Ганта с цветовой кодировкой), используйте встроенные отчёты:

  1. Перейдите в Проект → Отчёты → Визуальные отчёты.
  2. Выберите шаблон Диаграмма Ганта или Использование ресурсов.
  3. Нажмите Просмотр, затем Копировать в буфер обмена.
  4. Вставьте в Excel как Рисунок (правая кнопка → Специальная вставка → Рисунок).

Преимущество метода: сохраняется визуальная структура проекта. Недостаток: данные не редактируются (это просто картинка). Для редактируемой версии диаграммы Ганта в Excel придётся использовать VBA или надстройки.

📊 Какой формат экспорта вы используете чаще?
Ручное копирование
Сохранение как XLSX
Экспорт в XML
Визуальные отчёты
Другой способ

4. Автоматизация через VBA (для продвинутых пользователей)

Скрипты VBA позволяют переносить данные из Project в Excel с полным контролем над структурой, сохраняя связи между задачами, ресурсы и пользовательские поля. Ниже пример макроса, который экспортирует задачи с их длительностью и датами:

Sub ExportToExcel()

Dim prj As Project

Dim xlApp As Object

Dim xlWB As Object

Dim xlSheet As Object

Dim t As Task

Dim row As Integer

' Создаём экземпляр Excel

Set xlApp = CreateObject("Excel.Application")

Set xlWB = xlApp.Workbooks.Add

Set xlSheet = xlWB.Sheets(1)

' Заголовки столбцов

xlSheet.Cells(1, 1).Value = "ID"

xlSheet.Cells(1, 2).Value = "Название задачи"

xlSheet.Cells(1, 3).Value = "Длительность"

xlSheet.Cells(1, 4).Value = "Начало"

xlSheet.Cells(1, 5).Value = "Окончание"

' Экспорт задач

row = 2

For Each t In ActiveProject.Tasks

If Not t Is Nothing Then

xlSheet.Cells(row, 1).Value = t.ID

xlSheet.Cells(row, 2).Value = t.Name

xlSheet.Cells(row, 3).Value = t.Duration

xlSheet.Cells(row, 4).Value = t.Start

xlSheet.Cells(row, 5).Value = t.Finish

row = row + 1

End If

Next t

' Форматируем даты

xlSheet.Columns("D:E").NumberFormat = "dd.mm.yyyy"

' Сохраняем файл

xlWB.SaveAs "C:\Export\ProjectTasks.xlsx"

xlApp.Quit

End Sub

Чтобы запустить макрос:

  1. В MS Project нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Настройте путь сохранения в строке xlWB.SaveAs.
  4. Запустите макрос клавишей F5.

☑️ Подготовка к VBA-экспорту

Выполнено: 0 / 4

5. Использование Power Query (для сложных трансформаций)

Power Query в Excel позволяет импортировать данные из MS Project через промежуточный XML-файл с последующей обработкой. Это актуально, если нужно:

  • 🔄 Объединить данные из нескольких проектов.
  • 📊 Преобразовать структуру (например, развернуть иерархию задач в плоскую таблицу).
  • 🔍 Отфильтровать задачи по статусу или ресурсам.

Пошаговая инструкция:

  1. Экспортируйте проект в XML (как описано в разделе 2).
  2. В Excel перейдите в Данные → Получить данные → Из файла → Из XML.
  3. В окне Power Query разверните узлы Tasks и Resources.
  4. Удалите ненужные столбцы (например, OutlineLevel, если не нужна иерархия).
  5. Нажмите Закрыть и загрузить.

Пример трансформации в Power Query для развёртывания подзадач:

let

Источник = Xml.Tables(File.Contents("C:\Export\Project.xml")),

Tasks = Источник{0}[Tasks],

#"Развернутые строки" = Table.ExpandTableColumn(Tasks, "Task", {"Name", "Start", "Finish"}, {"Task.Name", "Task.Start", "Task.Finish"})

in

#"Развернутые строки"

6. Надстройки и сторонние инструменты

Если встроенные методы не покрывают ваши нужды, рассмотрите специализированные надстройки:

Инструмент Функционал Стоимость
Project Reader Чтение .mpp без MS Project, экспорт в Excel От $99
Seavus Project Viewer Просмотр и экспорт диаграмм Ганта, ресурсов, отчётов От $299
MPP to XLS Converter Пакетный экспорт нескольких проектов в Excel От $49

Преимущества надстроек:

  • 🔧 Сохраняют все пользовательские поля и заметки.
  • 📅 Корректно обрабатывают даты и календари.
  • 🔄 Поддерживают обратный импорт из Excel в Project.

Недостатки: платные лицензии и возможные проблемы совместимости с новыми версиями MS Project (например, Project 2021 или Project Online).

Частые ошибки и их решения

При переносе данных из Project в Excel пользователи сталкиваются с типичными проблемами. Вот как их избежать:

⚠️ Внимание: Если в Excel даты отображаются как ######, это означает, что ширина столбца недостаточна. Растяните столбец или примените формат Дата вручную.

Проблема 1: В Excel не отображаются кириллические символы.

Решение: Сохраните файл CSV в кодировке UTF-8 (через Блокнот) или используйте XML.

Проблема 2: Разорваны связи между задачами (преемственность).

Решение: Экспортируйте данные через VBA или надстройки, которые сохраняют поле Predecessors.

Проблема 3: В Excel не перенеслись пользовательские поля (например, Текст1, Число5).

Решение: Вручную добавьте эти поля в таблицу Excel после экспорта или используйте Power Query для их извлечения из XML.

Почему в Excel вместо длительности задачи "5д" отображается "5"?

Excel автоматически преобразует текстовые значения длительности (например, "5д" или "2нед") в числа. Чтобы вернуть исходный формат, перед экспортом в Project замените сокращения на полные названия ("5 дней") или используйте пользовательское поле с текстовым форматом.

FAQ: Ответы на популярные вопросы

Можно ли перенести диаграмму Ганта в Excel так, чтобы её можно было редактировать?

Да, но не стандартными средствами. Вам понадобится:

  1. Экспортировать данные задач (даты начала/окончания, длительность) в Excel.
  2. Создать ленточную диаграмму (Вставка → Ленточная диаграмма).
  3. Настроить оси по датам и задачам вручную.

Для автоматизации используйте VBA или надстройки вроде Gantt Excel.

Как перенести ресурсы (люди, оборудование) вместе с задачами?

Способы:

  • Через VBA: в макросе добавьте цикл по ActiveProject.Resources.
  • Через Power Query: разверните узел Resources в XML-файле.
  • Через надстройки: Seavus Project Viewer экспортирует ресурсы в отдельный лист Excel.
Почему при экспорте в Excel теряются цвета задач?

Цвета в MS Project — это часть форматирования диаграммы Ганта, которое не переносится в табличные форматы (XLSX, CSV). Решения:

  • Используйте условное форматирование в Excel на основе статуса задачи (например, красный для просроченных).
  • Экспортируйте диаграмму как рисунок (раздел 3 статьи).
Как автоматизировать экспорт при каждом изменении проекта?

Настройте автоматическое обновление:

  1. Сохраните проект в XML.
  2. В Excel подключитесь к файлу через Power Query.
  3. Создайте макрос, который обновляет данные по кнопке или по расписанию (через Application.OnTime).

Для Project Online используйте Power Automate (Microsoft Flow) с триггером на изменения проекта.

Можно ли перенести базовый план (Baseline) в Excel?

Да, но не всеми способами. Базовый план хранится в полях Baseline Start, Baseline Finish и т.д. Чтобы его экспортировать:

  • В Project добавьте эти поля в таблицу (Правка → Столбцы).
  • Экспортируйте через VBA или XML.

В ручном режиме или через Сохранить как базовый план не переносится.