Связь с EXCEL через OLE
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Связь с EXCEL через OLE
Всем привет... помогите... что я делаю не так? Мне надо записать в нужные мне ячейки определенную информацию....
вот что я делаю вкратце:
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)&'"'}
не проходит! Что делать?
вот что я делаю вкратце:
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
У меня так работает правда из ячеек я только читаю
?AnyOLEObject{PROP:Create} ='Excel.Sheet.8'
?AnyOLEObject{PROP:document} =path() & '\теплосети.xls'
читаем i# = сторка 10 колонка
line1=?AnyOLEObject{'Application.Cells(' & i# & ',10).Value'}
?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
я писал, да и не только я
уже про Excel тучу раз, поищите поиском по форуму
зы
1. насколько я помню Workbooks это в MS Word, в Excel Worksheet
2. когда пишите макрос VBA там есть строка подсказки, так вот она показыват несколько в другом формате... как бы сказать,
вот ты пишешь
Workbooks.Open Filename := FileName
а там должно подсказывать типа
Workbooks.Open(FileName)
так вот эта тема, которая показывается в скобках, так и нужно использовать в кларе
сумбурно наверное, но вот как то так

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

сумбурно наверное, но вот как то так

по аэродрому...
Re: Связь с EXCEL через OLE
Да, все так еще вчера и сделал!
OleControl{'Workbooks.open(' & CLIP(PATH()) &'\'&CLIP(FName)&')'}
OleControl{'visible'} = FALSE
OleControl{'Cells(2,1).value'} = 123123
теперь последний вопросец, как сохранить все?
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'}

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
Уточню, с вашего позволения:
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 тоже) все таймеры Клары должны быть отключены
Иначе рушится приложение
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 тоже) все таймеры Клары должны быть отключены
Иначе рушится приложение
Компьютер имеет то преимущество перед мозгом, что им пользуются...