'вызов excel
f_Put="C:\ESRI\AV_GIS30\Межевой_план_макет\ООО_Межевой_план_макет.xls"
concom=("C:\Program Files\Microsoft Office\Office\excel"++f_Put.quote)
'в предыдущей строке .quote нужно использовать, если в имени файла присутствуют пробелы
System.Execute(concom)
' устанавливаем связь с таблицей
systemClient = DDEClient.Make("Excel", "System")
if (systemClient.HasError) then
MsgBox.error(systemClient.GetErrorMsg, "") exit
end
' вызов макроса для активации требуемого листа таблицы (у меня их больше 10)
systemClient.Execute("[Run(""activeSheet"")]")
' устанавливаем связь с нужным листом
sstem1Client = ddeClient.Make( "Excel",
"Сведения_об_образуемых_участках" )
if (sstem1Client.HasError) then
MsgBox.error(sstem1Client.GetErrorMsg, "") exit
end
' заполняем необходимые ячейки таблицы
sstem1Client.Poke("R5C5:R5C8",aName)
sstem1Client.Poke("R11C5:R11C8",aName)
sstem1Client.Poke("R17C5:R17C8",aName)
sstem1Client.Poke("R24C5:R24C8",aName)
sstem1Client.Poke("R35C5:R35C8",aName)
sstem1Client.Poke("R28C6:R28C8",theKatUch)
sstem1Client.Poke("R30C6:R30C8",sArea)
' вызов макроса в данном случае добавить строку
systemClient.Execute("[Run(""addRow"")]")
' следующая конструкция используется, если динамично меняется активный лист таблицы
selection = systemClient.Request("Selection")
spreadsheet = selection.Left(selection.IndexOf("!"))
sstemClient = ddeClient.Make( "Excel", spreadsheet )
sstemClient.Poke( cells1, sNpoint)
sstemClient.Poke( cells2, Yp1.asString.translate(".",","))
sstemClient.Poke( cells3, Xp1.asString.translate(".",","))
sstemClient.Poke( cells4, norm)
' вызов макроса для форматирования ячеек листа
systemClient.Execute("[Run(""FormatSved"")]")
' нужно быть очень аккуратным при создании макросов.
' в принципе получается комплекс: таблица Excel, макросы, ArcView со своими скпиптами
' для решения поставленной задачи. У нас это формирование межевого плана.
' Естественно, что используются собственные Shape-файлы с атрибутивной информацией, своими полями
' и прочее
' спасибо критикам. А ранее была написана только одна строчка, потому что долго не удавалось 'справиться с синтаксисом вызова макроса. Остальное предполагалось известным