Здравствуйте, Аноним, Вы писали:
А>Если не жалко — можно РАБОЧИЙ пример?
Давай мыло — вышлю...
А вообще смысл такой...
1. Можешь попробовать создать объект MS Forms Frame в ActiveX Control Test Container. В режиме Design (свойство DesignMode = True )
появляется еще и Toolbar с контролами, которые можно перетаскивать на frame. При отключенном режиме Design получаем рабочий run-time
frame.
2. Я сделал на ATL-проект ActiveX компонента, вставил в него ATL-объект Dialog и в это окно поместил ActiveX c progid — Forms.Frame.1 . В интерфейсе создал свойство для возврата IDispatch от Forms.Frame.1 и метод для показа этого диалогового окна.
3. Вот код скрипта:
'Dim objWord
'Set objWord = WScript.CreateObject("Word.Application")
'objWord.ShowVisualBasicEditor = True
'Dim objVBE
'Set objVBE = objWord.VBE
'Dim objVBComp
'Set objVBComp = objVBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm)
'Set objForm = objVBComp.Designer
Set objFF = WScript.CreateObject("TestATLForms2.Forms2.1")
Set objForm = objFF.Frame 'WScript.CreateObject("Forms.Frame.1")
With objForm
.Caption = "MyForm"
.DesignMode = True
End With
Set objLabel = objForm.Add ("Forms.Label.1", "MyLabel", True)
With objLabel
.Caption = "Label"
.Top = 10
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With
Set objTextBox = objForm.Add ("Forms.TextBox.1", "MyTextBox", True)
With objTextBox
.Text = "TextBox"
.Top = 40
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With
Set objComboBox = objForm.Add ("Forms.ComboBox.1", "MyComboBox", True)
With objComboBox
.Text = "ComboBox"
.Top = 70
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With
'For Each objCnt In objForm.Controls
' MsgBox objCnt.Name
'Next
'objWord.ShowVisualBasicEditor = False
'objVBE.CommandBars("Run").Controls("Run Sub/UserForm").Execute
objFF.DoDialog
Set objForm = Nothing
Set objLabel = Nothing
Set objTextBox = Nothing
Set objComboBox = Nothing
WScript.Quit
Хотелось бы знать для чего вся эта бадяга ?

Может есть другие более простые пути решения проблемы ?