Исходный код
Option Explicit
Call CreateFileDef()
'==============================================================================
' Создать определение типа файла FILE_EXCEL, если его нет в приложении,
'добавить его к типу объекта. Затем создать реальный объект и файл в его составе.
'==============================================================================
Sub CreateFileDef()
Dim ExcelFDef, FIcon, SelectFileDlg, RetVal, NewObjDef, NewObj
'Если в системе не существует такого типа файлов, создать его и определить свойства
If Not ThisApplication.FileDefs.Has("FILE_EXCEL") Then
Set ExcelFDef = ThisApplication.FileDefs.Create
With ExcelFDef
.SysName = "FILE_EXCEL"
.Description = "Рабочая книга Excel"
.Extensions = "*.xls"
.Icon = ThisApplication.Icons(0)
End With
Else
Set ExcelFDef = ThisApplication.FileDefs("FILE_EXCEL")
End If
'Создать новый тип объекта и добавить к нему определение файла
If Not ThisApplication.ObjectDefs.Has("OBJ_TYPE_NEW") Then
Set NewObjDef = ThisApplication.ObjectDefs.Create
With NewObjDef
.SysName = "OBJ_TYPE_NEW"
.Description = "Новый тип"
.AllFileDefs = False
.FileDefs.Add ExcelFDef ' Добавляем тип файла
If ThisApplication.Commands.Has("CMD_EDIT") Then
.Commands.Add ThisApplication.Commands("CMD_EDIT")
End If
End With
Else
Set NewObjDef = ThisApplication.ObjectDefs("OBJ_TYPE_NEW")
End If
'Создать новый объект на рабочем столе
Set NewObj = ThisApplication.Desktop.Objects.Create(NewObjDef)
NewObj.Description = "Тест создания файла Excel"
If ExcelFDef.Templates.Count <> 0 Then
'Если тип файла существовал в системе и имеет шаблоны, создать
'файл из первого шаблона
NewObj.Files.AddCopy ExcelFDef.Templates(0), "Test.xls"
Else
' Открыть диалог выбора файла
Set SelectFileDlg = ThisApplication.Dialogs.FileDlg
SelectFileDlg.Filter = "Файлы Excel (*.xls)|*.xls||"
RetVal = SelectFileDlg.Show
If RetVal <> FALSE And SelectFileDlg.FileName <> "" Then
'Добавить к объекту файл, выбранный пользователем
Set NewFile = NewObj.Files.Create(ExcelFDef)
NewFile.CheckIn SelectFileDlg.FileName
End If
End If
'Открыть добавленный к объекту файл, если пользователь захочет
If ThisApplication.Commands.Has("CMD_VIEW") Then
RetVal = MsgBox("Открыть добавленный к новому объекту файл?", _
vbQuestion + vbYesNo)
If RetVal <> vbNo Then ThisApplication.ExecuteCommand "CMD_VIEW", NewObj
End If
End Sub
'==============================================================================