Помогите перевести VBа на CLARION
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Помогите перевести VBа на CLARION
Подскажите как правильно перевести команды с VB на язык Clarion
VB
ActiveSheet.Copy after:=ActiveSheet
Clarion
mExcel{'ActiveSheet.Copy(After=ActiveSheet')}
В результате под VB все нормально, а в Clarion
ошибка.
У меня WINDOWS 2000 Offic 2000
Clarion 6.3 build 9052
У меня сложилось впечатления, что не передаются
параметры в процедуру VB. Если в VB проходит вызов
на пример: Sheet(2).Select, то это хорошо отрабатывает
и в Clarion. А как передать параметры процедуре?
VB
ActiveSheet.Copy after:=ActiveSheet
Clarion
mExcel{'ActiveSheet.Copy(After=ActiveSheet')}
В результате под VB все нормально, а в Clarion
ошибка.
У меня WINDOWS 2000 Offic 2000
Clarion 6.3 build 9052
У меня сложилось впечатления, что не передаются
параметры в процедуру VB. Если в VB проходит вызов
на пример: Sheet(2).Select, то это хорошо отрабатывает
и в Clarion. А как передать параметры процедуре?
...
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
В макросе Excel так и пишется как в VB:
Код: Выделить всё
Sub CopySheet()
ActiveSheet.Copy after:=ActiveSheet
End Sub
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Вот такая команда прекрасно работает!
Код: Выделить всё
?ExcelOle{'ActiveSheet.Copy after:=ActiveSheet'}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Для работы с EXCEL использую ExcelClass
в программе даю команду:
mExcel.SendCommand('ActiveSheet.Copy after:=ActiveSheet')
страница копируется, но во вновь созданную книгу,
анологично происходит если выполнить команду VB
без параметров. В чем ошибка? В описании класса?
!ExcelClass
MEMBER
!_ABCDllMode_ EQUATE(0) ! Для С5 раскомментировать
!_ABCLinkMode_ EQUATE(1) ! Для С5 раскомментировать
MAP
END
INCLUDE('abxl.inc'),ONCE
ExcelClass.Init PROCEDURE(<STRING OpenFile>)
OpenStr string(128)
Filnam string(128)
ln short
CODE
IF ~SELF.Controls
SELF.Controls = CREATE(0, CREATE:OLE)
if errorcode()>0
!Message(error(), 'Класс EXCEL', ICON:Exclamation , BUTTON:Yes)
.
SELF.x = 1
SELF.y = 1
END
SELF.Controls{PROP:Create} = 'Excel.Application'
IF OpenFile
filnam = PATH()
ln = LEN(CLIP(filnam))
IF filnam[ln]<>'\' THEN filnam = CLIP(filnam) & '\'.
IF INSTRING('\',CLIP(OpenFile))
OpenStr = 'Application.Workbooks.Open("' & CLIP(OpenFile) &'")'
ELSE
filnam = CLIP(filnam) & OpenFile
OpenStr = 'Application.Workbooks.Open("' & CLIP(filnam) &'")'
.
ELSE
OpenStr = 'Application.Workbooks.Add'
END
SELF.Controls{OpenStr}
Self.SaveFile = Self.Controls{'Application.ActiveWorkbook.FullName'}
!Выполнить команду VBA
ExcelClass.SendCommand PROCEDURE(STRING OleCommand)
CODE
! UNLOCKTHREAD
SELF.Controls{OleCommand}
! LOCKTHREAD
в программе даю команду:
mExcel.SendCommand('ActiveSheet.Copy after:=ActiveSheet')
страница копируется, но во вновь созданную книгу,
анологично происходит если выполнить команду VB
без параметров. В чем ошибка? В описании класса?
!ExcelClass
MEMBER
!_ABCDllMode_ EQUATE(0) ! Для С5 раскомментировать
!_ABCLinkMode_ EQUATE(1) ! Для С5 раскомментировать
MAP
END
INCLUDE('abxl.inc'),ONCE
ExcelClass.Init PROCEDURE(<STRING OpenFile>)
OpenStr string(128)
Filnam string(128)
ln short
CODE
IF ~SELF.Controls
SELF.Controls = CREATE(0, CREATE:OLE)
if errorcode()>0
!Message(error(), 'Класс EXCEL', ICON:Exclamation , BUTTON:Yes)
.
SELF.x = 1
SELF.y = 1
END
SELF.Controls{PROP:Create} = 'Excel.Application'
IF OpenFile
filnam = PATH()
ln = LEN(CLIP(filnam))
IF filnam[ln]<>'\' THEN filnam = CLIP(filnam) & '\'.
IF INSTRING('\',CLIP(OpenFile))
OpenStr = 'Application.Workbooks.Open("' & CLIP(OpenFile) &'")'
ELSE
filnam = CLIP(filnam) & OpenFile
OpenStr = 'Application.Workbooks.Open("' & CLIP(filnam) &'")'
.
ELSE
OpenStr = 'Application.Workbooks.Add'
END
SELF.Controls{OpenStr}
Self.SaveFile = Self.Controls{'Application.ActiveWorkbook.FullName'}
!Выполнить команду VBA
ExcelClass.SendCommand PROCEDURE(STRING OleCommand)
CODE
! UNLOCKTHREAD
SELF.Controls{OleCommand}
! LOCKTHREAD
...