Stran prikazuje uporabo R-a kot odjemalca in PowerPointa kot strežnika. Najprej je naveden makro za PowerPoint v VBA, nato R-ov program za isto nalogo. Na koncu pripisani dodatek za R, ki ga je pripravi Gabor Grothendieck [ggrothendieck@myway.com], omogoča lažje krmiljenje iz R-a/rcom-a.
Za izvedbo morajo biti nameščeni R, R(D)COM in rcom.
Za pomoč pri pripravi zapisa html se zahvaljujem Andreju Lajovicu.
Sub UstvariDias() ' Makro v PowerPointu ustvari predstavitev, vstavi prosojnico ' z naslovom in okvirjem za besedilo (označeni seznam), ' doda naslov in besedilo ter zažene predstavitev Set ppt = CreateObject("PowerPoint.Application") Set pres = ppt.Presentations.Add Set dias = pres.Slides.Add(1, 2) '2 = naslov in okvir z označenim seznamom dias.Shapes.Title.TextFrame.TextRange.Text = "Prikaz povezovanja R-a" With dias.Shapes.Item(2).TextFrame.TextRange .Text = "R iz Worda" & Chr(13) & "PowerPoint iz R-a" & Chr(13) & "RExcel" .Font.Size = 32 End With pres.SlideShowSettings.Run End Sub
# zaženi
PowerPoint, ustvari predstavitev
ppt <-
comCreateObject("PowerPoint.Application")
pres <-
comInvoke(comGetProperty(ppt,"Presentations"),"Add")
#
dodaj dias z naslovom in besedilom
dias <-
comInvoke(comGetProperty(pres,"Slides"),"Add",1,2)
#
vstavi
naslov
comSetProperty(comGetProperty(comGetProperty(comGetProperty(comGetProperty(dias,"Shapes"),"Title"),"TextFrame"),"TextRange"),"Text","Prikaz
povezovanja R-a")
# vstavi
besedilo
obseg<-comGetProperty(comGetProperty(comInvoke(comGetProperty(dias,"Shapes"),"Item",2),"TextFrame"),"TextRange")
comSetProperty(obseg,"Text","R
iz Worda\rPowerPoint iz R-a\rRExcel")
comSetProperty(comGetProperty(obseg,"Font"),"Size",32)
# prikaži
predstavitev
comSetProperty(ppt,"Visible",TRUE)
comInvoke(comGetProperty(pres,"SlideShowSettings"),"Run")
"[[<-.COMObject"
<- function(x, s, value) { comSetProperty(x, s, value); x }
"[[.COMObject"
<- comGetProperty
"$.COMObject"
<- function(x, f) {
..FUN
<- as.character(substitute(f))
function(...)
comInvoke(x, ..FUN, ...)}
Dodatek omogoča prekodiranje po ključu:
ppt[["Visible"]] <- TRUE # comSetProperty
ppt[["Presentations"]] # comGetProperty
ppt[["Presentations"]]$Add # (comGetProperty +) comInvoke