91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
1

Ошибка при работе с Excel

21.05.2016, 18:52. Показов 3067. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Определяю количество занятых ячеек (ячеек с информацией) в столбце файл-Excel, точнее номер последнего занятого столбца. При выполнении следующей команды:
C++
1
2
3
4
5
   //Активация последней известной ячейки
   v_Var_Sheet.OlePropertyGet("Cells").OlePropertyGet("SpecialCells", 11).OleProcedure("Activate");
 
   //Узнать номер последнего известного столбца
   int i_ColLast = v_Var_Excel.OlePropertyGet("ActiveCell").OlePropertyGet("Column");
возникает ошибка при выполнении первой строки, если лист в Excel защищен. На незащищенном листе все нормально. Что делаю не так? может есть другой метод?
0
21.05.2016, 18:52
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2016, 18:52
Ответы с готовыми решениями:

Ошибка при работе с Excel
ошибка Добавлено через 27 секунд private void button3_Click_1(object sender, RoutedEventArgs e) { excelapp...

Ошибка при работе с Excel
Программа взаимодействует с экселем. Если я правильно понял, у меня не подключена какая-то библиотека, потому что данный проект работал,...

Ошибка при работе с excel
Нужно прочитать значение из ячейки. Например 1,1 (A1). Возникает ошибка -------------- Исключение из HRESULT: 0x800A03EC ...

26
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 20:20 2
Цитата Сообщение от akrufar Посмотреть сообщение
Что делаю не так?
то что вы делаете дает ли эксель сделать руками? дает ли он это сделать в макросе на вба? если нет - очевидно это нельзя сделать.
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:23  [ТС] 3
Да, дает. Проверял. Код:
ActiveCell.SpecialCells(xlLastCell).Select

Пробовал вместо Activate писать Select. Тоже не помогло
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 20:32 4
akrufar, руками дает а в вба нет? может вы в вба пишите не то что делаете руками? через запись макроса пробовали?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:37  [ТС] 5
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, руками дает а в вба нет? может вы в вба пишите не то что делаете руками? через запись макроса пробовали?
Да, через макросы дает. И руками тоже дает (ctrl+end). Все получается. А через Си не дает

Код VBA как раз из макроса скопировал (ActiveCell.SpecialCells(xlLastCell).Select)
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 20:45 6
Цитата Сообщение от akrufar Посмотреть сообщение
Код VBA как раз из макроса скопировал
ничуть ваш код на этот код не похож. по идее там
C++
1
v_Var_Excel.OlePropertyGet("ActiveCell").OleFunction("SpecialCells", xlLastCell /*надо глядеть какое это число*/).OleProcedure/*а может функция надо глядеть*/("Select")
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:50  [ТС] 7
xlLastCell = 11. OleProcedure("Select") пробовал, разницы нет.
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 20:52 8
Цитата Сообщение от akrufar Посмотреть сообщение
разницы нет
а как с первым куском? у вас там не активцелл а просто целлс
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:58  [ТС] 9
Цитата Сообщение от vxg Посмотреть сообщение
а как с первым куском? у вас там не активцелл а просто целлс
Тогда билдер ругается и говорит EOleSysError with message "Неизвестное имя" и указывает на эту строку
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 21:06 10
akrufar, очевидно вы не у того объекта её запрашиваете - вот во второй строке он же не ругается?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21:11  [ТС] 11
Разобрался, надо немного исправить код на такой:
C++
1
2
v_Var_Excel.OlePropertyGet("ActiveCell").OlePropertyGet("SpecialCells", 11).
      OleProcedure("Select");
Тогда все запускается, но с защищенным листом все также, не работает:
EOleSysError with message "Ошибка"

Добавлено через 2 минуты
А еще вот на этой строке стопорится и стрелку показывает при выводе этой ошибки:
C++
1
return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 21:33 12
akrufar, если работает в вба то работает и тут иного сложно представить спешиалцелл это точно свойство-массив или функция?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21:38  [ТС] 13
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, если работает в вба то работает и тут иного сложно представить
Самое интересное, что оно работает на простых листах, но не на защищенных.

Цитата Сообщение от vxg Посмотреть сообщение
спешиалцелл это точно свойство-массив или функция?
Вот этот вопрос я не понял. В VBA я не силен. Начинающий. Вычитал, что ActiveCell возвращает диапазон ячеек. А судя по тому как макрос работает SpecialCells с 11 кодом выдает только одну ячейку.
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
21.05.2016, 21:52 14
akrufar, нажмите в вба ф2 полазайте по его объектам. Если вызовы одинаковые то действие кода вба должно быть таким же как на C++ - там чудес нет и скрытых тайн
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
22.05.2016, 15:48  [ТС] 15
А можете данный код запустить у себя на машине? Используя файл с защищенным листом. может опять проблема на стороне моей среды разработки?
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
22.05.2016, 21:18 16
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
23.05.2016, 08:09  [ТС] 17
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
Странно. У меня свободно исполняет.
А есть тогда другой метод вычислить последнюю занятую строку и столбец в Excel на защищенном листе?
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
23.05.2016, 09:48 18
Цитата Сообщение от akrufar Посмотреть сообщение
А есть тогда другой метод вычислить последнюю занятую строку и столбец в Excel на защищенном листе?
к своему огорчению за вас нашел этот метод в первой же строке поиска в гугл
Visual Basic
1
Cells(Rows.Count, 1).End(xlUp).Row
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
23.05.2016, 10:01  [ТС] 19
Недостаток в том, что надо явно указывать номер столбца, придется перебирать каждый отдельно. Так что не подходит. попробую другие методы
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
23.05.2016, 10:21 20
Цитата Сообщение от akrufar Посмотреть сообщение
Недостаток в том, что надо явно указывать номер столбца
логика подсказывает что вы должны его знать или у вас документ неустановленной формы который распознает нейросеть)? тогда перебирайте все ячейки на листе) по ссылке прямо сказано что тот способ который вы применяли ранее не работает на защищенных листах
0
23.05.2016, 10:21
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2016, 10:21
Помогаю со студенческими работами здесь

Странная ошибка при работе с Excel
Пытаюсь создать Excel файл и записать в него ячейки но при компиляции программы получаю совершенно не понятную мне ошибку int i; ...

Ошибка при работе с формулами MS Excel
Здравствуйте, столкнулся на днях с проблемой ввода формул в ячейки эл. таблицы. Суть в том, что при попытке использовать в формуле значение...

Ошибка при работе с макросами Excel
Здравствуйте! При работе в Excel с толкнулся с такой ошибкой: Compile error in hidden module: Лист1 помогите пожалуйста разобраться...

Странная ошибка при работе с Excel
В общем, имеется такая процедура конвертации XLS в CSV (даже не спрашивайте, зачем мне это нужно): procedure...

Ошибка в приложении при работе с excel
Здравствуйте написал приложение! В приложении считывает данные с Excel таблицы. У меня на пк все нормально, никаких ошибок. А вот на пк...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
Laravel или Symfony: что лучше для старта?
Wired 18.02.2025
В веб-разработке выбор правильного фреймворка может стать определяющим фактором успеха проекта. Особенно это актуально для PHP - одного из самых распространенных языков программирования, где Laravel. . .
Что нового в Laravel 12
Wired 18.02.2025
С момента своего появления в 2011 году Laravel постоянно развивается, внедряя инновационные решения и совершенствуя существующие возможности. В начале 2025 года ожидается выход Laravel 12 - новой. . .
Роутер в Laravel: как работать с маршрутами
Wired 18.02.2025
Маршрутизация - один из основополагающих элементов любого веб-приложения на Laravel, определяющий как приложение отвечает на HTTP-запросы к различным URL-адресам. По сути, роутинг - это механизм. . .
Интеграция шаблона Bootstrap в Laravel PHP
Wired 18.02.2025
Разработка веб-приложений в современном мире требует не только надежного бэкенда, но и привлекательного, отзывчивого интерфейса. Laravel, как один из самых популярных PHP-фреймворков, отлично. . .
Использование контроллеров и middleware в Laravel PHP
Wired 18.02.2025
Современная веб-разработка требует четкой организации кода и эффективного управления потоком HTTP-запросов. Laravel, как один из ведущих PHP-фреймворков, предоставляет два мощных инструмента для. . .
Фильтрация массива по неточному соответствию элементам другого массива в JavaScript
Wired 18.02.2025
При работе с массивами данных в JavaScript иногда возникает задача поиска и фильтрации элементов по неточному соответствию. В отличие от точного сравнения, когда мы ищем полное совпадение значений,. . .
Создаем SPA Router на чистом JavaScript
bytestream 17.02.2025
В современной веб-разработке одностраничные приложения (SPA) стали стандартом для создания динамичных и отзывчивых пользовательских интерфейсов. Ключевым компонентом любого SPA является роутер -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru