Страницы: 1
RSS
Редактирование xlsm файла запуском скрипта из командной строки с параметрами.
 
У меня есть программа на c++, которая выдается некие данные и куча экселевских листов с общей книгой макросов. Мне нужно записывать данные из моей программы в эти листы. Напрямую записывать данные у меня не получится, поэтому я решил делать это через вызов скрипта на. Visual Basic, так как он вроде это умеет.
Я предполагаю либо вызывать скрипт из cmd, прописывая параметрами путь к файлы экселя и мои данные, либо, если так нельзя, то писать данные в промежуточный файл, забирать их оттуда скриптом VB, который, опять же, нужно вызывать мне из cmd.
У меня два вопроса: возможно ли вообще это реализовать и,  если да, то что мне нужно для этого использовать (VB, VBS, VBA) и как это вызывать из cmd?  
 
Цитата
Dumz написал:
то мне нужно для этого использовать (VB, VBS, VBA)
VBS
Цитата
Dumz написал:
как это вызывать из cmd?  
CSCRIPT script.vbs arg1 arg2 ....
а можно PS1, там вызов powershell -file script.ps1 arg1 arg2
Но вот почему из C++ не получилось работать, это очень странно. Даже 1с c этим справляется.
Изменено: БМВ - 27.08.2020 18:17:44
По вопросам из тем форума, личку не читаю.
 
Альтернатива - вызвать Excel, указав в качестве параметра книгу (надстройку), содержащую макросы. В этой книге повесить обработчик на событие открытия книги. Дополнительные параметры можно указать, например, через переменные окружения.
Владимир
 
sokol92,  Владимир, приветствую. А смысл? Код практически одинаков, а проблем, как с параметрами, так и просто с вызовом- только больше.
По вопросам из тем форума, личку не читаю.
 
Здравствуйте, Михаил! Это не более, чем дело вкуса, я, например, не люблю посредников. :)  
Владимир
 
БМВ, у плюсов нет нормальных библиотек для работы с приложениями Office. Родных, по крайней мере. Если разбирать COM-объекты самому, то может что-то получиться, но я этого не умею, а самая задача мизерная, время на изучение того не стоит, тем более не факт. Я нашел на гитхабе библиотеки для работы с xlsx, но если ее функциями сохранять в формате xlsm, то файл ломается. Так что увы.

Цитата
sokol92 написал:
Альтернатива - вызвать Excel, указав в качестве параметра книгу (надстройку), содержащую макросы. В этой книге повесить обработчик на событие открытия книги. Дополнительные параметры можно указать, например, через переменные окружения.
А в этом случае разве не будет этот скрипт вызывать вообще каждый раз, как я буду экселе открывать? Мне такого не надо)  
 
Цитата
sokol92 написал:
не люблю посредников.
Я тоже клавиатуру не люблю :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
Dumz написал:
БМВ , у плюсов нет нормальных библиотек для работы с приложениями Office.
Кто вам такое сказал? Гугл забанили? Гуглим
https://docs.microsoft.com/ru-ru/cpp/mfc/mfc-and-atl?view=vs-2019
https://docs.microsoft.com/ru-ru/cpp/overview/visual-cpp-samples?view=vs-2019

Далее, можно вообще не использовать библиотек (неожиданно да?).
https://support.microsoft.com/en-us/help/196776/office-automation-using-visual-c

К примеру, записать массив в открытую книгу Excel (конкретно по вашему вопросу)
https://docs.microsoft.com/ru-ru/previous-versions/office/troubleshoot/office-developer/automate-excel-from-c
«Бритва Оккама» или «Принцип Калашникова»?
 
И таки да, ваше название темы не соответствует вашей задаче. Не надо городить костыли, пишите нужные данные из программы на С++ на лист Excel напрямую. Без всяких библиотек, на чистом С++.
Изменено: bedvit - 28.08.2020 11:57:05
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх