Исходный код
Option Explicit
Call DuplicateObj(ThisObject, ThisApplication.Desktop)
'==============================================================================
' Дублировать указанный объект, поместив новый на Рабочий стол и
' открыв его на редактирование
'==============================================================================
Sub DuplicateObj(Obj, Parent)
Dim NewObj, EditObjDlg, RetVal
On Error Resume Next
'Создаем новый объект дублированием в составе указанного родителя. Новый объект
'создается немедленно, поэтому в случае ошибки его надо удалить - иначе он останется
'"висеть" в базе
Set NewObj = obj.Duplicate(Parent)
If Err<>0 Then
MsgBox "Ошибка дублирования (возможно, новый объект" & Chr(13) &_
"нельзя создавать в составе объекта """ & Parent.Description & """." _
& Chr(13) & "Код ошибки: " & Err, vbExclamation
If Not (NewObj Is Nothing) Then NewObj.Erase
Exit Sub
End If
'Здесь можно задать значения атрибутов нового объекта и другие его свойства.
'....
'Создание нового объекта можно на этом закончить, однако:
'1) значения уникальных атрибутов сбрасываются в Empty;
'2) обязательные атрибуты не проверяются на наличие значений;
'3) атрибуты со значениями по умолчанию буду установлены в свои умолчания.
'....................поэтому................
'Открыть новый объект на редактирование
Set EditObjDlg = ThisApplication.Dialogs.EditObjectDlg
EditObjDlg.Object = NewObj
'Если открыть окно сейчас, значения атрибутов, имеющих значения по умолчанию,
'будут сброшены в Empty. Для установки значений в умолчание надо
'перед показом диалога вызвать метод Update:
NewObj.Update
RetVal = EditObjDlg.Show
'Здесь надо отследить: если пользователь отменил диалог редактирования нового объекта,
'предполагая, что отменяет его _создание_, объект надо удалять вручную (поскольку
'он уже создан)
If RetVal <> TRUE Then NewObj.Erase
End Sub
'==============================================================================