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