| Критерий | COM (Automation) | ODBC / OLE DB | VBA |
|---|---|---|---|
| Нужен установленный Excel | ✔ Да | ❌ Нет (Excel не запускается) | ✔ Да |
| Видимость Excel | Полностью скрывается (Visible = False) | Не запускается вообще | Обычно виден, но можно скрыть окна |
| Тип задач | Чтение + запись, полное управление Excel | Быстрое чтение табличных диапазонов (импорт данных) | Управление Excel изнутри (макросы) |
| Скорость обработки | ❌ Медленнее (COM-вызовы) | ✔ Быстро (без запуска Excel) | Средняя |
| Структура данных | Любая структура листа | Только структурированные таблицы | Любая |
| Запись данных | ✔ Гибкая (формулы, стили, любые ячейки) | ❌ Ограниченная (только SQL-таблица) | ✔ Гибкая |
| Чтение данных | Среднее | ✔ Очень быстро | Среднее |
| Работа с формулами, форматами, стилями | ✔ Полный контроль | ❌ Нет | ✔ Есть |
| Работа с большими таблицами | ⚠ Ограничена скоростью | ✔ Эффективно | ⚠ Excel начинает тормозить |
| Использование без графики, фона | ✔ Можно | ✔ Да, всегда | ⚠ Частично (Excel всё равно в фоне запускается) |
| Подходит для серверных решений | ⚠ Ограниченно (Excel не рекомендуется на сервере) | ✔ Да | ❌ Нет |
| Простота разработки | Средняя | Средняя | ✔ Высокая |
| Предпочтительный сценарий | Запись, генерация файлов, автоматизация Excel | Импорт данных, интеграции с БД | Автозадачи в Excel, макросы |
| Вариант | Excel нужен | Полностью скрыто | Простота |
|---|---|---|---|
| VBScript (WSH) | Да | Да | Просто |
| PowerShell + COM | Да | Да | Очень удобно |
| PowerShell + ImportExcel | Нет | Да | Очень удобно |
| Python + pywin32 | Да | Да | Гибко |
| Python + openpyxl | Нет | Да | Гибко |
| AutoIt / AHK | Да | Да | Средне |
ODBC и OLE DB работают только с прямоугольными таблицами (либо лист как таблица, либо именованный диапазон). Если на листе структура «дырявая» — смешанные заголовки, строки разной длины, merged-ячейки — драйвер читает это плохо или не читает вовсе.
с VBA ничего не могу сказать, нужно тестировать данное утверждение.
Превосходно, что остальное мной всё отлично сказано и будет полезным вопрошающим. А данные тонкости могут оказаться полезным дотошным людям в своём деле. Стоит помнить - точность бывает лишней, если она не обоснованна.