![]() |
![]() |
![]() |
|
MSScriptControl.ScriptControl AddCode | ☑ | ||
---|---|---|---|---|
0
zladenuw
19.12.12
✎
21:23
|
ScrptCtrl=Новый COMОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript"; ScrptCtrl.AddCode(" Можно ли в данный код добавить несколько функций и получить значения ? |
|||
1
zladenuw
19.12.12
✎
21:24
|
получаю ошибку
Ошибка при вызове метода контекста (AddCode): Произошла исключительная ситуация (Ошибка компиляции Microsoft VBScript): Предполагается наличие идентификатора ScrptCtrl=Новый COMОбъект("MSScriptControl.ScriptControl"); ScrptCtrl.Language="vbscript"; ScrptCtrl.AddCode(" |Function MkPropVal( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue |Dim oPropertyValue As New com.sun.star.beans.PropertyValue |If Not IsMissing( cName ) Then | oPropertyValue.Name = cName |EndIf |If Not IsMissing( uValue ) Then | oPropertyValue.Value = uValue | EndIf |MkPropVal() = oPropertyValue |End Function |Function oExpOptions() | oExpOptions = Array(_ | MkPropVal( 'Overwrit', 'true')) |End Function |"); MassivParametrovSave = ScrptCtrl.Run("oExpOptions"); |
|||
2
Jaap Vduul
19.12.12
✎
22:16
|
(1)
Запихнуть в ScriptControl код на обычном VB не получится. В VBScript нет строгой типизации. Интерпретатор не понимает, что такое "As String" и "As com.sun.star.beans.PropertyValue". Также ему неведомы ключевое слово Optional и функция IsMissing. Строковые константы в бэйсиках обозначаются двойными кавычками. И т.д. и т.п. |
|||
3
Jaap Vduul
19.12.12
✎
22:19
|
+(2)
И вообще, для работы с объектной моделью OO, в восьмёрке нет необходимости извращаться со ScriptControl... |
|||
4
zladenuw
19.12.12
✎
22:30
|
||||
5
zladenuw
19.12.12
✎
23:02
|
||||
6
zladenuw
20.12.12
✎
12:15
|
(1,2) и все таки можно было так
script = Новый COMОбъект("ScriptControl"); script.Language = "vbs"; script.AddCode ( "Dim Parameters() | |Sub InitParameters(Size) | | Erase Parameters | | If Size > 0 Then | Redim Parameters(Size - 1) | End If | |End Sub | |Sub SetParameter(ServiceManager, Name, Value, Index) | | Set PropertyValue = ServiceManager.Bridge_GetStruct(""com.sun.star.beans.PropertyValue"") | PropertyValue.Name = Name | PropertyValue.Value = Value | | Set Parameters(Index) = PropertyValue | |End Sub | |Sub SetBooleanParameter(ServiceManager, Name, Value, Index) | | SetParameter ServiceManager, Name, Cbool(Value), Index | |End Sub | |Function LoadDocument(ComponentLoader, URL, TargetFrameName, SearchFlags) | | Set LoadDocument = ComponentLoader.loadComponentFromURL(URL, TargetFrameName, SearchFlags, Parameters) | |End Function | |Sub CloseDocument(Document) | | Document.Close True | |End Sub" ); script.Run("InitParameters", 2); script.Run("SetBooleanParameter", ServiceManager, "Hidden", 1, 1); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |