0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60

При выгрузке из Excel в Delphi возникает ошибка: ole error 800a03ec

29.12.2015, 06:21. Показов 32264. Ответов 12

Author24 — интернет-сервис помощи студентам
Программа спокойно компилируется, но периодически выскакивает данная ошибка, она может выскочить до подключения к файлу, после считывания строк, не имеет значения сколько считает, всегда появляется с некой рандомностью, при этом, если ошибка выскакивает после считывания некоторых строк в массив, то содержимое массива не выводится. Ошибка ole error 800a03ec, перерыл уже много источников, но везде одно и тоже описывается, не правильный тип данных в Excele, но оно же иногда работает, у столбцов одинаковы типы данных 'текстовый'.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
var
  Ap : Variant;
  Nomer,metka:integer;
  Mas: array[1..5] of AnsiString;
   Rows, Columns, i,RNum: Integer;
begin
randomize;
metka:=0;// показывает записалось главное слово в перевод или нет
i:=0;
try
Ap := CreateOleObject('Excel.Application');
Ap.Workbooks.Open(ExtractFilePath(Application.ExeName)+'Japanese.xlsx',0,True);
Rows := ap.ActiveSheet.UsedRange.Rows.Count;
Columns := ap.ActiveSheet.UsedRange.Columns.Count;
finally
if rows=0 then showmessage('Подключиться к базе не удалось')
else    showmessage('Подключение к базе удалось');
 
 
 label3.Caption:=  inttostr(Rows);
nomer:=random(rows);// индекс главного слова
for i := 1 to 5 do
  mas[i]:='';
 
 
  for I := 1 to 5 do
            begin
                case i of
                1:begin //////////////////////////////////
                    if metka=0 then
                    begin
                      RNum:=random(4);
                      if RNum=0 then
                        begin mas[i]:=Ap.Range['B'+inttostr(nomer)]; metka:=1; showmessage('Case №1, metka= '+inttostr(metka)+ ' шанс срабатывания, слово: '+mas[i]); end
                      else
                        begin mas[i]:=Ap.Range['B'+inttostr(random(rows))]; showmessage('Case №1, metka= '+inttostr(metka)+' '+mas[i]); end;
                      end
                    else
                      begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))];
                      end;
                    end; ///////////////////////////////
                2: begin ///////////////////////////////
                      if metka=0 then
                      begin
                        RNum:=random(4);
                         if RNum=0 then
                          begin
                            mas[i]:=Ap.Range['B'+inttostr(nomer)]; metka:=1; showmessage('Case №2, metka= '+inttostr(metka)+' '+mas[i]);
                          end
                         else
                          begin
                           mas[i]:=Ap.Range['B'+inttostr(random(rows))] ; showmessage('Case №2, metka= '+inttostr(metka)+ ' шанс срабатывания, слово: '+mas[i]);
                          end;
                      end
                      else
                      begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))];
                      end;
                  end;////////////////////////////////
 
                3:begin
                    if metka=0 then
                    begin
                      RNum:=random(4);
                      if RNum=0 then
                        begin
                          mas[i]:=Ap.Range['B'+inttostr(nomer)]; metka:=1; showmessage('Case №3, metka= '+inttostr(metka)+ ' шанс срабатывания, слово: '+mas[i] );
                        end
                      else
                        begin
                          mas[i]:=Ap.Range['B'+inttostr(random(rows))]; showmessage('Case №3, metka= '+inttostr(metka)+' '+mas[i]);
                        end;
                    end
                    else
                      begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))];showmessage('Case №3, metka= '+inttostr(metka)+' '+mas[i])
                      end;
                  end;
 
                4:begin
                    if metka=0 then
                    begin
                      RNum:=random(4);
                      if RNum=0 then
                        begin
                          mas[i]:=Ap.Range['B'+inttostr(nomer)]; metka:=1; showmessage('Case №4, metka= '+inttostr(metka)+ ' шанс срабатывания, слово: '+mas[i]);
                        end
                      else
                      begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))]; showmessage('Case №4, metka= '+inttostr(metka)+' '+mas[i])
                      end;
                    end
                    else
                      begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))]; showmessage('Case №4, metka= '+inttostr(metka)+' '+mas[i])
                      end;
                  end;
                5:begin if (mas[5]='') and (metka=0) then
                        begin
                          mas[i]:=Ap.Range['B'+inttostr(nomer)]; showmessage('Case №5, metka= '+inttostr(metka)+' '+mas[i]);
                        end
                      else
                       begin
                        mas[i]:=Ap.Range['B'+inttostr(random(rows))]; showmessage('Case №55, metka= '+inttostr(metka)+' '+mas[i]);
                       end;
                       end;
             end
 
 end;
  end;
 
 
metka:=0;
for I := 1 to 5 do
combobox1.Items.Add(mas[i]);
 
Label1.Caption := Ap.Range['A'+inttostr(nomer)];
 
 
 
 
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2015, 06:21
Ответы с готовыми решениями:

Delphi ошибка ole error 800a03ec
Здравствуйте, работал с Excel через delphi, почти задачу сделал батс ошибка "Ole error 800a03ec", в форумах искал решение не нашел....

Ошибка ole error 800a03ec
Производится экспорт данных из набора данных в Excel. Код писали на учебе, там все работало. Дома экспорт не работает, ошибка - ole error...

При выгрузке библиотеки(ДЛЛ) возникает возникает ошибка
Здравствуйте!! Ребята, подскажите, по такому вопросу написал код создания кнопки на форме при подгрзке DLL. Этот код нашёл у нас на...

12
5639 / 4483 / 1087
Регистрация: 29.08.2013
Сообщений: 27,963
Записей в блоге: 3
29.12.2015, 09:11
https://www.cyberforum.ru/post8464639.html

ошибку отлавливай через try..except
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
29.12.2015, 09:24
Из блога Андрея Есина: http://blog.esin.name/2011/11/... a03ec.html
Цитата Сообщение от Блог Андрея Есина
OLE error 800A03EC

Есть проект, который умеет сохранять какие-либо данные в Excel файл и текстовый файл. Если этот проект запущен не как служба, то всё в ажуре: Всё сохраняется, записывается и работает. Стоит запустить эту же программу как сервис, так сразу начинается срань в виде ошибки OLE error 800A03EC.

Она вываливается когда программа пытается записать данные в Excel файл, с текстовыми файлами такого не происходит.

Чтобы избавится от такой ошибки нужно было просто вывернуть свой мозг и положить рядом, а потом создать папку C:\Windows\SysWOW64\config\systemprofile \Desktop или C:\Windows\System32\config\systemprofile \Desktop в зависимости от архитектуры,первая папка для x64, вторая - x86.

И всё.

[UPD 23.06.2013]
Выяснилось, что этого мало для Windows 2012/8 в связке с Office 2013.

Нужно сделать следующее:
Зайти в Панель управление -> Администрирование -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM. Здесь выбрать Microsoft Office Application, выбрать свойства, перейти на вкладку Удостоверение и выбрать Указанный пользователь и указать нужно пользователя, от которого должен запускаться Excel, так же можно зайти на вкладку Безопасность, Разрешение на запуск и активацию, настроить и добавить нужно пользователя и дать ему все права.
Замечу. В моей системе, в расположении: Панель управления -> Администрирование -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM - нет узла "Microsoft Office Application". И обсуждаемая ошибка у меня никогда не возникала.
0
0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60
29.12.2015, 13:04  [ТС]
Уже делал, он ничего не отлавливал, просто сразу ошибка вылетала, он даже первоначальный этап подключения к документу не давал сделать

Добавлено через 6 минут
Чтобы избавится от такой ошибки нужно было просто вывернуть свой мозг и положить рядом, а потом создать папку C:\Windows\SysWOW64\config\systemprofile \Desktop или C:\Windows\System32\config\systemprofile \Desktop в зависимости от архитектуры,первая папка для x64, вторая - x86.
Данная папка уже существует. Второй способ тоже не помог. У меня не оказалось Microsoft Office Application, по этому проделал всё с Microsoft Excel Application , но у меня и так стоял полный доступ. Спасибо за помощь и с наступающим Есть еще идеи?)

Добавлено через 2 минуты
Замечу. В моей системе, в расположении: Панель управления -> Администрирование -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM - нет узла "Microsoft Office Application". И обсуждаемая ошибка у меня никогда не возникала.
не совсем понял, вы сами удалили этот узел или его изначально не было?
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
29.12.2015, 13:30
Цитата Сообщение от georgy544 Посмотреть сообщение
не совсем понял, вы сами удалили этот узел или его изначально не было?
Этого узла у меня изначально не было.
---
А если несколько раз обработать один и тот же документ - то ошибка тоже случайным образом возникает (или может не возникнуть)?

Добавлено через 3 минуты
Предлагаю для начала попробовать установить MS Excel другой версии.
0
0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60
29.12.2015, 13:33  [ТС]
А если несколько раз обработать один и тот же документ - то ошибка тоже случайным образом возникает (или может не возникнуть)?
не совсем понял, в каком смысле обработать? можете конкретизировать пожалуйста
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
29.12.2015, 14:05
Я имею в виду, если несколько раз выполнить код для одного и того же файла, то что будет? - Ошибка на разных этапах выполнения будет появляться? Или только в одном месте?

Добавлено через 5 минут
Вот ещё по теме: Запуск макроса в Excel
0
0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60
30.12.2015, 07:33  [ТС]
Да к сожалению проблема осталась. У меня изначально стоит на formshow, сделал сейчас идентичный код на formcreate тоже самое осталось, вообще никакой закономерности не вижу, работает раз 0-10 нормально, потом бац на случайном месте ошибка выскакивает.
Вот ещё по теме: Запуск макроса в Excel
еще не читал, почитаю отпишусь. Спасибо за помощь!
0
5639 / 4483 / 1087
Регистрация: 29.08.2013
Сообщений: 27,963
Записей в блоге: 3
30.12.2015, 08:59
georgy544, сторонние компоненты для вывода в эксель разрешены?
0
0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60
31.12.2015, 06:22  [ТС]
почитал, галочки поставил, но не помогло проблема осталась) уже посещают мысли сделать всё через бд

Добавлено через 1 минуту
я ничего в excel не вывожу. я беру данные из excel
0
5639 / 4483 / 1087
Регистрация: 29.08.2013
Сообщений: 27,963
Записей в блоге: 3
31.12.2015, 08:33
Цитата Сообщение от georgy544 Посмотреть сообщение
я ничего в excel не вывожу. я беру данные из excel
без разницы
так что, сторонние компоненты для чтения из Экселя разрешены?
0
0 / -1 / 0
Регистрация: 19.02.2015
Сообщений: 60
09.01.2016, 06:20  [ТС]
разрешены
0
5639 / 4483 / 1087
Регистрация: 29.08.2013
Сообщений: 27,963
Записей в блоге: 3
09.01.2016, 13:56
есть платный XLSRearWriteII
есть бесплатный zexmlss (надо поколдовать с установкой, но ничего сложного)

оба не требуют установленного экселя, выгружают и читают отлично
у платного есть форум - там изредка отвечают, у бесплатного есть автор - мне отвечал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2016, 13:56
Помогаю со студенческими работами здесь

Если в таблице базы пустая ячейка, то при выгрузке в ListView возникает ошибка
Доброго времени суток, форумчане! Возникли некоторые вопросы при работе с БД. Загружаю в ListView данные из базы вот таким...

Ошибка при выгрузке в Excel
Здравствуйте. Использую код в данной теме для выгрузки в Эксель Private Sub Îò÷åò_Click() Dim qdf As QueryDef, db As DAO.Database ...

Ошибка при выгрузке в Excel 2010 из 1С
Добрый день, возникает ошибка при выгрузке в Excel 2010. (во вложении) У документа есть несколько макетов. Один из макетов не...

Ошибка при выгрузке данных в Excel
Ребят, подскажи в чем ошибка. Выгружается только одна запись из запроса, хотя должно быть 5 строк. Выгружается только шапка и одна строка....

При создании дистрибутива приложения (написанного на VB) возникает ошибка: - Unexpected error number 80010108 has occurred : Automation error.
Уважаемые эксперты VB-ка , помогите разрешить следующую проблему: При создании дистрибутива приложения (написанного на VB) возникает...


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

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

Новые блоги и статьи
Согласованность транзакций в MongoDB
Codd 30.04.2025
MongoDB, начинавшая свой путь как классическая NoSQL система с акцентом на гибкость и масштабируемость, сильно спрогрессировала, включив в свой арсенал поддержку транзакционной согласованности. Это. . .
Продвинутый ввод-вывод в Java: NIO, NIO.2 и асинхронный I/O
Javaican 30.04.2025
Когда речь заходит о вводе-выводе в Java, классический пакет java. io долгие годы был единственным вариантом для разработчиков, но его ограничения становились всё очевиднее с ростом требований к. . .
Обнаружение объектов в реальном времени на Python с YOLO и OpenCV
AI_Generated 29.04.2025
Компьютерное зрение — одна из самых динамично развивающихся областей искусственного интеллекта. В нашем мире, где визуальная информация стала доминирующим способом коммуникации, способность машин. . .
Эффективные парсеры и токенизаторы строк на C#
UnmanagedCoder 29.04.2025
Обработка текстовых данных — частая задача в программировании, с которой сталкивается почти каждый разработчик. Парсеры и токенизаторы составляют основу множества современных приложений: от. . .
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
bytestream 29.04.2025
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто. . .
Слабые указатели в Go: управление памятью и предотвращение утечек ресурсов
golander 29.04.2025
Управление памятью — один из краеугольных камней разработки высоконагруженных приложений. Го (Go) занимает уникальную нишу в этом вопросе, предоставляя разработчикам автоматическое управление памятью. . .
Разработка кастомных расширений для компилятора C++
NullReferenced 29.04.2025
Создание кастомных расширений для компиляторов C++ — инструмент оптимизации кода, внедрения новых языковых функций и автоматизации задач. Многие разработчики недооценивают гибкость современных. . .
Гайд по обработке исключений в C#
stackOverflow 29.04.2025
Разработка надёжного программного обеспечения невозможна без грамотной обработки исключительных ситуаций. Любая программа, независимо от её размера и сложности, может столкнуться с непредвиденными. . .
Создаем RESTful API с Laravel
Jason-Webb 28.04.2025
REST (Representational State Transfer) — это архитектурный стиль, который определяет набор принципов для создания веб-сервисов. Этот подход к построению API стал стандартом де-факто в современной. . .
Дженерики в C# - продвинутые техники
stackOverflow 28.04.2025
История дженериков началась с простой идеи — создать механизм для разработки типобезопасного кода без потери производительности. До их появления программисты использовали неуклюжие преобразования. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru