|
1C 8.2 и Excel | ☑ | ||
---|---|---|---|---|
0
nAPACEHAK
30.04.14
✎
16:13
|
При открытии Excel
Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ПутьКФайлу); //Состояние("Обработка файла Microsoft Excel..."); ExcelЛист = Excel.Sheets(Лист); Исключение Сообщить("Ошибка при запуске Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); получаю ошибку Ошибка при запуске Microsoft Excel. {Обработка.ЗагрузитьОтбытиеИзФайла.Форма.Форма.Форма(28)}: Ошибка при вызове конструктора (COMОбъект): Приложение было запущено, но оно не зарегистрировало фабрику классов: Приложение было запущено, но оно не зарегистрировало фабрику классов Куда копать? |
|||
1
Wobland
30.04.14
✎
16:14
|
ну не в гугл же, правда?
|
|||
2
nAPACEHAK
30.04.14
✎
16:16
|
ну туда я первым делом сунулся, но ничего не удалось дельного найти ((((
запуск 1С от администратора - тоже ошибка |
|||
3
rozer76
30.04.14
✎
16:18
|
эксель (уста/переуста)новить
|
|||
4
nAPACEHAK
30.04.14
✎
16:20
|
а кроме (уста/переуста)новки есть варианты?
Excel 2013 стоит |
|||
5
Torquader
30.04.14
✎
16:31
|
(4) Твой очень новый Excel почему-то не хочет общаться с тобой, так как не смог зарегистрировать интерфейс в таблице.
Если офис starter или что-то типа того, то он не умеет. |
|||
6
z80a
30.04.14
✎
16:33
|
(0) Поставить libreoffice
|
|||
7
nAPACEHAK
30.04.14
✎
16:41
|
Странно... Офис ПРО стоит. Лицензия. Переустанавливать то как, если все ключи потеряны. А ломаный не прокатит :(
Может тут чего? http://s019.radikal.ru/i627/1404/70/30d2caf1b505.jpg |
|||
8
nAPACEHAK
30.04.14
✎
16:42
|
не. не то
|
|||
9
MiniMuk
30.04.14
✎
17:02
|
на 64битном сервере?
|
|||
10
Torquader
30.04.14
✎
17:34
|
Попробуйте ещё явно указать версию Excel.
Excel.Application.12 или какой у него номер. |
|||
11
nAPACEHAK
30.04.14
✎
20:30
|
64 бит сервер
явно указать - не прокатило лан. буду тогда через xml забирать |
|||
12
Torquader
30.04.14
✎
20:45
|
А офис - 32 бита ?
Тогда можно попробовать через DCOM - забирать по сети (или с той же машины, но имитируя сеть). |
|||
13
MiniMuk
01.05.14
✎
12:22
|
(11) про спец папочку для 64битного сервера слышал?
|
|||
14
zulu_mix
01.05.14
✎
13:04
|
ФайлExcel = ПолучитьCOMОбъект(ПутьКФайлу);
ExcelЛист = ФайлExcel.Sheets(Лист); |
|||
15
nAPACEHAK
02.05.14
✎
21:25
|
нет. А что за спец папочка? расскажи?
|
|||
16
nAPACEHAK
02.05.14
✎
21:43
|
ФайлExcel = ПолучитьCOMОбъект(ПутьКФайлу);
ExcelЛист = ФайлExcel.Sheets(Лист); вроде работает. зато теперь в другой строке ошибка. работало так: ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell); Теперь получаю: {Обработка.ЗагрузитьОтбытиеИзФайла.Форма.Форма.Форма(49)}: Поле объекта не обнаружено (ActiveCell) ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell); После ФайлExcel = ПолучитьCOMОбъект(ПутьКФайлу); наверно надо немного по другому ячейки обрабатывать? Но это уже наверно другая история.... |
|||
17
Torquader
02.05.14
✎
21:58
|
(16) Зачем тебе активная ячейка ?
Обращайся через Cell(Ряд,Строка) ? Потом, нужно сначала получить книгу, потом найти в ней лист и только после этого читать этот лист. |
|||
18
DjSpike
02.05.14
✎
22:00
|
Можно все сделать через Yoksel.
|
|||
19
Чайник Рассела
02.05.14
✎
22:01
|
а что с ADO уже не модно работать?
|
|||
20
Torquader
02.05.14
✎
22:05
|
Человек хочет через Excel и у него уже половина заработала - что вы ему мешаете ?
|
|||
21
Чайник Рассела
02.05.14
✎
22:05
|
(20) зачем идти порочным путем?
|
|||
22
Torquader
02.05.14
✎
22:08
|
(21) Знаешь, когда выяснится, что тип строки определяется цветом или размером шрифта, то ADO отправляется в далёкий лес.
А Yoksel на 64-битный сервер может и не встать. |
|||
23
nAPACEHAK
02.05.14
✎
22:20
|
блин.. не умею тут ссылки на посты писать, типа (17) научите )))
вот для чего активная ячейка - определить последнее поле со значением для перебора далее xlLastCell = 11; ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell); RowCount = ActiveCell.Row; по задумке - с экселя выдергиваем последнее непустое значение (исключая те, где были введены данные и потом стерты из ячейки) это значение и есть число строк с которых надо забрать данные далее уже Cell(Ряд,Строка) циклом по RowCount Для Row=НачСтрока По RowCount Цикл эта обработка выдрана с рабочей базы, но там 32 на 64 не работает. таже самая ошибка была в строке из начала поста переделал по совету (14) - ПолучитьCOMОбъект(ПутьКФайлу); стала появляться другая ошибка, строками ниже, которая про ActiveCell |
|||
24
nAPACEHAK
02.05.14
✎
22:20
|
о! уже умею ссылки на пост писать )))))
|
|||
25
Torquader
02.05.14
✎
22:22
|
Вместо ActiveCell бери просто лист, из которого читаешь, или UsedRange.Rows.Count - тоже даёт число рядов, только в последнем офисе - изменённые (то есть формат и обрамление) тоже считаются непустыми (чтоб им пусто было).
|
|||
26
nAPACEHAK
02.05.14
✎
22:23
|
(20) да у меня одна обработка полностью работает через эксель. эту стал писать по аналогии, но на 64 - поймал ошибку
взял рабочую - и та же самая ошибка надо данные забрать с другой программы, а она умеет только в pdf, html, xls и xml выгружать. думаю первые 2 варианта точно не прокатят ))) |
|||
27
Torquader
02.05.14
✎
22:25
|
(26) Ты лист получил ?
Просто - ActiveCell действует, если пользователь интерактивно что-то выделил - у тебя сервер - и он точно не может ничего выделить. |
|||
28
nAPACEHAK
02.05.14
✎
22:26
|
(25) вот про эти "непустые" и идет речь
ActiveCell = Excel.ActiveCell.SpecialCells(11); их хорошо обрабатывает. пустые измененные (формат, обрамление, введены и удалены данные итд) - считаются пустыми |
|||
29
nAPACEHAK
02.05.14
✎
22:28
|
(27) ммм...эээ... а как же обработка которая уже не по разу данные забирала? открыл эксель, считал, закрыл. никто ж ничо не выделял. или я чот не догоняю? %)
|
|||
30
Torquader
02.05.14
✎
22:29
|
(29) Всё зависит от версии Excel - если она делает документ активным (то есть окно в Foreground), то появляется активная ячейка, если окно в неизвестном состоянии, то ячейка может и не появиться.
|
|||
31
nAPACEHAK
02.05.14
✎
22:43
|
(30) Если речь про версию Excel то работает на офис 2010 и не работает на офис 2013 обе 32-разрядные
ОС в 1м случае Win7 x86 во 2м Win8 x64 |
|||
32
Torquader
02.05.14
✎
22:44
|
(31) На 13-том чего-то вообще криво работало.
Но, открой справочник объектов Excel и посмотри, что там поменялось - в некоторых версиях там всё по-русски написано. |
|||
33
nAPACEHAK
04.05.14
✎
13:21
|
блин....
xlLastCell = 11; Excel = ПолучитьCOMОбъект(ПутьКФайлу); ExcelЛист = Excel.Sheets(Лист); ActiveCell = ExcelЛист.Cells.SpecialCells(xlLastCell); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |