Do PowerPointa iz R-a

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.


  • Makro v VBA
    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
    

  • Program za R

    # 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")


  • Grothendieckov dodatek

    "[[<-.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



    
    X

    OPOZORILO : Pregledujete staro stran IBMI

    Vsebine na strani so zastarele in se ne posodabljajo več. Stara stran zajema določene članke in vsebine, ki pa morajo biti še vedno dostopne.

    Za nove, posodobljene vsebine se obrnite na http://ibmi.mf.uni-lj.si/