Страница 1 из 1

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

Добавлено: 31 Октябрь 2008, 18:10
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)&'"'}
не проходит! Что делать?

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

Добавлено: 31 Октябрь 2008, 18:18
Serg_ksn
Р.S. Версия Clarion 5.5

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

Добавлено: 01 Ноябрь 2008, 3:23
BOB
У меня так работает правда из ячеек я только читаю

?AnyOLEObject{PROP:Create} ='Excel.Sheet.8'
?AnyOLEObject{PROP:document} =path() & '\теплосети.xls'
читаем i# = сторка 10 колонка
line1=?AnyOLEObject{'Application.Cells(' & i# & ',10).Value'}

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

Добавлено: 01 Ноябрь 2008, 12:57
StillZero
я писал, да и не только я :) уже про Excel тучу раз, поищите поиском по форуму

зы
1. насколько я помню Workbooks это в MS Word, в Excel Worksheet
2. когда пишите макрос VBA там есть строка подсказки, так вот она показыват несколько в другом формате... как бы сказать,
вот ты пишешь
Workbooks.Open Filename := FileName
а там должно подсказывать типа
Workbooks.Open(FileName)
так вот эта тема, которая показывается в скобках, так и нужно использовать в кларе :)
сумбурно наверное, но вот как то так :)

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

Добавлено: 01 Ноябрь 2008, 16:15
Serg_ksn
Да, все так еще вчера и сделал!
OleControl{'Workbooks.open(' & CLIP(PATH()) &'\'&CLIP(FName)&')'}
OleControl{'visible'} = FALSE
OleControl{'Cells(2,1).value'} = 123123
теперь последний вопросец, как сохранить все?

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

Добавлено: 02 Ноябрь 2008, 7:54
Игорь Столяров
ну если последний, то:

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

:)

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

Добавлено: 05 Ноябрь 2008, 9:52
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 тоже) все таймеры Клары должны быть отключены
Иначе рушится приложение