Do R-a iz Worda

Spodnji makro prikazuje uporabo Worda kot odjemalca in R-a kot strežnika. V Wordu označimo del besedila (ki mora biti pravilno zaporedje R-ovih ukazov) in poženemo makro. Kot rezultat dobimo na koncu datoteke vstavljen najprej tekstovni in za njim grafični izhod označenega zaporedja.
Opomba: Da dobimo tekstovni izhod, je treba v označenem zaporedju uporabiti ukaz "print". Ne torej npr. "summary(x)", ampak "print (summary(x))".

Za izvedbo morata biti nameščena R in R(D)COM.

Za pomoč pri pripravi zapisa html se zahvaljujem Andreju Lajovicu.


Sub WoRdStat()
'
' Avtor: Jaro Lajovic - jaro.lajovic@mf.uni-lj.si
'
' Makro shrani označeno besedilo (ki mora biti Rov program brez
' napak), zažene R, uporabi označeno zaporedje ukazov in vstavi 
' dobljeni R-ov tekstovni in grafični izhod na konec datoteke v Wordu.
' 
' V korenskem imeniku C:\ ustvari tri datoteke, ki jih ne pobriše
' za seboj: zachRpr.txt (R-ov program), zachRpr.out (tekstovni izhod) 
' in zachRpr.png (grafični izhod).
'
' ===============================================================
' Najprej zapiši označeni del v datoteko "c:\zachRpr.txt"

    zachRpr = Selection.Range
    Documents.Add Template:="Normal", NewTemplate:=False
' Pred kodo napiši vrstico, ki odpre grafično napravo png
    Selection.TypeText Text:="png(file='c:\zachRpr.png',width = 400, height = 400,bg='transparent')"
    Selection.TypeText Chr(13)
    Selection.TypeText Text:="sink(file='c:\zachRpr.out')"
    Selection.TypeText Chr(13)
' Prilepi kopirano kodo
    Selection.TypeText zachRpr
' Pojdi na konec, dodaj vrstico, ki zapre grafično napravo png ...
    Selection.EndKey Unit:=wdStory
    Selection.TypeText Chr(13)
    Selection.TypeText Text:="sink()"
    Selection.TypeText Chr(13)
    Selection.TypeText Text:="dev.off()"
' ... in napiši dokument
    ActiveDocument.SaveAs FileName:="c:\zachRpr.txt", _
        FileFormat:=wdFormatText, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False
    ActiveWindow.Close
'
' ==== glavna zanka za izvedbo programa v R-u
' Potem zaženi kodo v Ru in shrani grafiko kot "c:\zachRpr.png"
    Set x = CreateObject("StatConnectorSrv.StatConnector")
    x.Init ("R")
    expr = "source('c:\zachRpr.txt')"
    x.EvaluateNoReturn (expr)
    x.Close
'
' ==== zaključna opravila
' Premakni kurzor z označenega besedila ...
    Selection.MoveRight Unit:=wdCharacter, Count:=1
' ... premakni pogled dokumenta v "pogled postavitve strani"
    If ActiveWindow.View.SplitSpecial = wdPaneNone Then
        ActiveWindow.ActivePane.View.Type = wdPageView
    Else
        ActiveWindow.View.Type = wdPageView
    End If
' ... vstavi morebitni output
    Selection.EndKey Unit:=wdStory
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = "Courier New"
    Selection.Font.Size = 10
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.InsertFile FileName:="c:\zachRpr.out", Range:="", _
        ConfirmConversions:=False, Link:=False, Attachment:=False
    Selection.TypeText Chr(13)
' ... in vstavi grafiko
    Selection.EndKey Unit:=wdStory
    ActiveDocument.Shapes.AddPicture Anchor:=Selection.Range, FileName:= _
        "c:\zachRpr.png", LinkToFile:=False, SaveWithDocument _
        :=True

End Sub

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/