Связь с EXCEL через OLE

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Serg_ksn
Прохожий
Сообщения: 3
Зарегистрирован: 31 Октябрь 2008, 18:01

Связь с EXCEL через OLE

Сообщение Serg_ksn »

Всем привет... помогите... что я делаю не так? Мне надо записать в нужные мне ячейки определенную информацию....
вот что я делаю вкратце:

O_EXCEL PROCEDURE
OleControl SIGNED
FName CSTRING(FILE:MaxFilePath),AUTO
CODE
FName = 'doc.xls'

OleControl = CREATE(FName,CREATE:OLE)
OleControl{PROP:Create} = 'Excel.Application'
OleControl{'visible'} = TRUE
OleControl{'Workbooks.Open Filename:="' & CLIP(PATH()) &'\'&CLIP(FName)&'"'}
stop('Workbooks.Open Filename:="' & CLIP(PATH()) &'\'&CLIP(FName)&'"')
OleControl{'Workbooks("doc").Activate'}
OleControl{'Set CurrSheet = Worksheets(1)'}
OleControl{'CurrSheet.Activate'}
OleControl{'CurrSheet.Range("A1").Value = 3.14159'}
OleControl{'CurrSheet.Cells(2, 2).Value = 567567'}
OleControl{'ActiveWorkbook.Save'}
OleControl{'Workbooks("' &CLIP(FName)&'").Close SaveChanges:=true'}
OleControl{'quit'}
DESTROY(OleControl)

в VBA все это отрабатывается, открывается файл, который я указал - doc, в него записываюся ячейки,он записывается и закрывается! Использую код в Clariоn-е, файл открываться не желает, т.е. кманда
OleControl{'Workbooks.Open Filename:="' & CLIP(PATH()) &'\'&CLIP(FName)&'"'}
не проходит! Что делать?
Serg_ksn
Прохожий
Сообщения: 3
Зарегистрирован: 31 Октябрь 2008, 18:01

Re: Связь с EXCEL через OLE

Сообщение Serg_ksn »

Р.S. Версия Clarion 5.5
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Связь с EXCEL через OLE

Сообщение BOB »

У меня так работает правда из ячеек я только читаю

?AnyOLEObject{PROP:Create} ='Excel.Sheet.8'
?AnyOLEObject{PROP:document} =path() & '\теплосети.xls'
читаем i# = сторка 10 колонка
line1=?AnyOLEObject{'Application.Cells(' & i# & ',10).Value'}
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Re: Связь с EXCEL через OLE

Сообщение StillZero »

я писал, да и не только я :) уже про Excel тучу раз, поищите поиском по форуму

зы
1. насколько я помню Workbooks это в MS Word, в Excel Worksheet
2. когда пишите макрос VBA там есть строка подсказки, так вот она показыват несколько в другом формате... как бы сказать,
вот ты пишешь
Workbooks.Open Filename := FileName
а там должно подсказывать типа
Workbooks.Open(FileName)
так вот эта тема, которая показывается в скобках, так и нужно использовать в кларе :)
сумбурно наверное, но вот как то так :)
по аэродрому...
Serg_ksn
Прохожий
Сообщения: 3
Зарегистрирован: 31 Октябрь 2008, 18:01

Re: Связь с EXCEL через OLE

Сообщение Serg_ksn »

Да, все так еще вчера и сделал!
OleControl{'Workbooks.open(' & CLIP(PATH()) &'\'&CLIP(FName)&')'}
OleControl{'visible'} = FALSE
OleControl{'Cells(2,1).value'} = 123123
теперь последний вопросец, как сохранить все?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8034
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Связь с EXCEL через OLE

Сообщение Игорь Столяров »

ну если последний, то:

OleControl{'Application.WorkBooks.SaveAs("C:\MyFile.xls")'}
OleControl{'Application.ActiveWindow.Close'}
OleControl{'Application.Quit'}

:)
Make Clarion Great Again ! 😎
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: Связь с EXCEL через OLE

Сообщение WadimZapara »

Уточню, с вашего позволения:
OleControl{'Application.ActiveWorkBook.SaveAs("C:\MyFile.xls")'}
Или
OleControl{'Application.WorkBooks(1).SaveAs("C:\MyFile.xls")'}
если это единственная книга, или вместо 1 нужный номер, либо "имя_книги", если она уже сохранялась, или открывалась для редактирования,
в этом случае можно OleControl{'Application.ActiveWorkBook.Save'}

а затем, можно и без OleControl{'Application.ActiveWindow.Close'}
OleControl{'Application.Quit'}

Но при всём при этом, Excel переспросит, а точно ли вы этого хотите, если вы не установите свойство
OleControl{'Application.DisplayAlerts'} = FALSE
(Кстати FALSE=0, а TRUE=-1 у Excel-я)

А ещё: в C55 во время работы с Excel (и Word тоже) все таймеры Клары должны быть отключены
Иначе рушится приложение
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Ответить