Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46

Как создать файл exe для редактирования файла .xlsm

26.08.2020, 23:02. Показов 6974. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу на С++, одной из функций должно быть редактирование экселевского файла с расширением. xlsm. Я нашел библиотеку для работы с xlsx, с её помощью также можно читать xlsm, но только читать, если я пытаюсь сохранить файл в этом формате, то он ломается, поэтому этот вариант мне не подходит. Знаю, что VBA может редактировать такие файлы, поэтому подумал написать на нём скрипт и запускать его из своей программы через командную строку, передавая данные либо через параметры (там всего два числа и нужная директория) либо сохранять эти числа в промежуточный файлик и оттуда также через cmd вытаскивать в эксель.
Так вот, можно ли скомпилировать скрипт, написанный на VBA, или мне нужно пользоваться обычным VB. Если VB, то может ли через него редактировать xlsm?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2020, 23:02
Ответы с готовыми решениями:

Как открыть xlsm файл для редактирования макроса
помогите. как открыть файл с расширением xlsm для редактирования макроса

Добавление файла в exe-файл с возможностью редактирования
Здравствуйте, есть exe-файл, скомпилированный на делфи, и двоичный файл, так вот вопрос такой: можно ли этот файл включить в екзешник, с...

Для каждого exe-файла создать bat-файл для его запуска
Не могу понять как создать exe файла создать бат файл для его запуска?

29
Эксперт по электронике
6524 / 3153 / 332
Регистрация: 28.10.2011
Сообщений: 12,370
Записей в блоге: 7
27.08.2020, 00:15
VBA выполняется в офисных программах (Word, Excel и т. д.). Возможно вы его перепутали с VBS.
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
27.08.2020, 02:24  [ТС]
locm, ,возможно, но вопрос остался. Мне нужно скомпилировать программу, которая сможет менять содержимое ячейки в экселевском файле с расширением xlsm и сохранять его в этом формате без потери данных. VBS это может?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,685
Записей в блоге: 14
01.09.2020, 13:43
Цитата Сообщение от Drummerzzz Посмотреть сообщение
VBS это может?
- да, может.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.09.2020, 19:42
Цитата Сообщение от Drummerzzz Посмотреть сообщение
Пишу программу на С++
C++ тоже может. Ни какие там библиотеки не нужны специальные, через объект Excel.Application. Ищите что то подобное
CreateObject("Excel.Application");, подключаетесь у нужному файлу xlsm и работаете.
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
01.09.2020, 20:10  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ни какие там библиотеки не нужны специальные
Я знаю, что как-то с Ole работают, но это ведь тоже специальные библиотеки. Есть какое-то подтверждение, что C++ и без доп. библиотек или разбирания COM-объектов самому способен работать с Экселем?
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 20:22
Цитата Сообщение от Drummerzzz Посмотреть сообщение
, если я пытаюсь сохранить файл в этом формате, то он ломается
Покажи код сохранения.
0
Эксперт по электронике
6524 / 3153 / 332
Регистрация: 28.10.2011
Сообщений: 12,370
Записей в блоге: 7
01.09.2020, 20:46
Цитата Сообщение от Pro_grammer Посмотреть сообщение
C++ тоже может. Ни какие там библиотеки не нужны специальные
То есть все что нужно встроено в ЯП?
Сделать скрин ругательств C++ компилятора?
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 20:54
Цитата Сообщение от locm Посмотреть сообщение
Сделать скрин ругательств C++ компилятора?
Да ни фига он не ругается наверное. Просто при сохранении файла нужно указать два параметра, первый - путь к файлу, а второй - формат файла, константа типа int равная 52.
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
01.09.2020, 20:54  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
    Document xlsx("Book_name.xlsm"); // создается объект
    xlsx.selectSheet("Sheet_name");
    QVariant my_value("что-то там");
    xlsx.write("A2", my_value);
    xlsx.saveAs("Book_name2.xlsm") // получаю битый файл (вес файла примерно на треть сокращается при этом)
    xlsx.saveAs("Book_name3.xlsx") // получаю битый xlsx (вес тот же, что и в предыдущем варианте)
    
    Document xlsx2();
    xlsx2.addSheet("List 1");
    xlsx2.write("A2", my_value);
    xlsx2.saveAs("Book_name4.xlsx"); // получаю нормальный файл
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 20:55
попробуй.
C++
1
 xlsx2.saveAs("Book_name4.xlsm",52);
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
01.09.2020, 20:56  [ТС]
Цитата Сообщение от I can Посмотреть сообщение
а второй - формат файла, константа типа int равная 52
объясните, пожалуйста, о чем вы здесь
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 20:58
Цитата Сообщение от Drummerzzz Посмотреть сообщение
о чем вы здесь
Там еще есть несколько параметров по умолчанию. 52 - это константа равная формату файла xlsm
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
01.09.2020, 21:04  [ТС]
Цитата Сообщение от I can Посмотреть сообщение
Там еще есть несколько параметров по умолчанию. 52 - это константа равная формату файла xlsm
Завтра на работе попробую, но вряд ли выйдет, там такие конструкторы
C++
1
2
3
4
5
public:
    explicit Document(QObject *parent = Q_NULLPTR);
    Document(const QString &xlsxName, QObject *parent = Q_NULLPTR);
    Document(QIODevice *device, QObject *parent = Q_NULLPTR);
    ~Document();
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 21:06
Цитата Сообщение от Drummerzzz Посмотреть сообщение
там такие конструкторы
Да, не получится ничего
0
2 / 2 / 0
Регистрация: 18.10.2018
Сообщений: 46
01.09.2020, 21:14  [ТС]
А функции сэйва такие:
C++
1
2
3
bool save() const;
    bool saveAs(const QString &xlsXname) const;
    bool saveAs(QIODevice *device) const;
Я пытался ещё открыть файл как QIODevice, но это скорее от безысходности, и, конечно, получилась полная ерунда.
Короче попробую скриптом, его вроде можно даже в exe-шник переделать
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 22:35
Вот, набросал простенькую программку для редактирования xlsm. Попробуйте.
Архив.
Prog.rar
Параметры
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
01.09.2020, 22:44
Исправление.
Prog.rar
И пути в параметрах нужно полные писать, например

C:\tmp\Prog.exe C:\tmp\1.xlsm,1,A1,111,C:\tmp\2.xlsm
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.09.2020, 05:31
Цитата Сообщение от locm Посмотреть сообщение
То есть все что нужно встроено в ЯП?
Сделать скрин ругательств C++ компилятора?
Я не крупный спец в С++. По крайней мере поиск по форуму выдал вот это:
Работа с Excel

На VB6 я напишу код изменения ячейки Excel размером менее 10 строк, без всяких дополнительных библиотек.
Странно, если в C++ нет такой возможности.
0
Эксперт по электронике
6524 / 3153 / 332
Регистрация: 28.10.2011
Сообщений: 12,370
Записей в блоге: 7
02.09.2020, 13:00
Цитата Сообщение от I can Посмотреть сообщение
Да ни фига он не ругается наверное.
А это тогда что?
Миниатюры
Как создать файл exe для редактирования файла .xlsm  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.09.2020, 13:00
Помогаю со студенческими работами здесь

Как создать для своего файла окно редактирования в админконсоли?
Проблема у меня такая. Есть допустим файл proba.php.Которая лежит в директории D:\OpenServer\domains\naforum\wp-content\plugins ...

Как создать иконку для exe файла ?
Здравствуйте. Подскажите пожалуйста, как правильно создать иконку для *.exe файла ? Какого размера ? Как экспортировать ? п.с. ...

Как правильно создать икону для .exe файла ?
Здравствуйте. Подскажите пожалуйста, как правильно создать иконку для *.exe файла ? Какого размера ? Как экспортировать ? п.с. ...

Создать массив натуральных трёхзначных чисел. Открыть файл для редактирования. В новый файл сохранить числа кратные трём
Доброе утро. Помогите пожалуйста. Создать массив натуральных трёхзначных чисел. Открыть файл для редактирования. В новый файл сохранить...

Как создать exe контейнер для исполняемого файла с ограничениями
Как создать exe контейнер для исполняемого файла с встроенной системой ограничений для пользователя, например по конечной дате...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru