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

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

21.05.2016, 18:52. Показов 3096. Ответов 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
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,429
21.05.2016, 20:20
Цитата Сообщение от akrufar Посмотреть сообщение
Что делаю не так?
то что вы делаете дает ли эксель сделать руками? дает ли он это сделать в макросе на вба? если нет - очевидно это нельзя сделать.
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:23  [ТС]
Да, дает. Проверял. Код:
ActiveCell.SpecialCells(xlLastCell).Sele ct

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

Код VBA как раз из макроса скопировал (ActiveCell.SpecialCells(xlLastCell).Sel ect)
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
21.05.2016, 20:45
Цитата Сообщение от 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  [ТС]
xlLastCell = 11. OleProcedure("Select") пробовал, разницы нет.
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
21.05.2016, 20:52
Цитата Сообщение от akrufar Посмотреть сообщение
разницы нет
а как с первым куском? у вас там не активцелл а просто целлс
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 20:58  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
а как с первым куском? у вас там не активцелл а просто целлс
Тогда билдер ругается и говорит EOleSysError with message "Неизвестное имя" и указывает на эту строку
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
21.05.2016, 21:06
akrufar, очевидно вы не у того объекта её запрашиваете - вот во второй строке он же не ругается?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21: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,429
21.05.2016, 21:33
akrufar, если работает в вба то работает и тут иного сложно представить спешиалцелл это точно свойство-массив или функция?
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
21.05.2016, 21:38  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, если работает в вба то работает и тут иного сложно представить
Самое интересное, что оно работает на простых листах, но не на защищенных.

Цитата Сообщение от vxg Посмотреть сообщение
спешиалцелл это точно свойство-массив или функция?
Вот этот вопрос я не понял. В VBA я не силен. Начинающий. Вычитал, что ActiveCell возвращает диапазон ячеек. А судя по тому как макрос работает SpecialCells с 11 кодом выдает только одну ячейку.
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
21.05.2016, 21:52
akrufar, нажмите в вба ф2 полазайте по его объектам. Если вызовы одинаковые то действие кода вба должно быть таким же как на C++ - там чудес нет и скрытых тайн
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
22.05.2016, 15:48  [ТС]
А можете данный код запустить у себя на машине? Используя файл с защищенным листом. может опять проблема на стороне моей среды разработки?
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
22.05.2016, 21:18
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
0
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
23.05.2016, 08:09  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
akrufar, у меня макрос вба при попытке исполнить ваш код на защищённом листе говорит что этого на таких листах делать нельзя
Странно. У меня свободно исполняет.
А есть тогда другой метод вычислить последнюю занятую строку и столбец в Excel на защищенном листе?
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
23.05.2016, 09:48
Цитата Сообщение от 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  [ТС]
Недостаток в том, что надо явно указывать номер столбца, придется перебирать каждый отдельно. Так что не подходит. попробую другие методы
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,429
23.05.2016, 10:21
Цитата Сообщение от akrufar Посмотреть сообщение
Недостаток в том, что надо явно указывать номер столбца
логика подсказывает что вы должны его знать или у вас документ неустановленной формы который распознает нейросеть)? тогда перебирайте все ячейки на листе) по ссылке прямо сказано что тот способ который вы применяли ранее не работает на защищенных листах
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru