如何通过RDCOMClient将“function结构”的VBA解释为R代码?

上下文:我使用R来做一些数据处理,然后导出到Excel并创build一个条形图。

问题:到目前为止,logging一个Excel VBAmacros,然后通过RDCOMClient包把它翻译成R代码是相当容易的。 然而,我不知道如何解释VBA“function结构”。

问题:我想将以下Excel VBA代码翻译成R代码(特别是使用RDCOMClient包):

' Activate barchart ActiveSheet.ChartObjects("Chart 1").Activate ' Select the Male data column ActiveChart.SeriesCollection(1).Select ' Change the colour of the Male bars in the barchart With Selection.Format.Fill .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorAccent1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 .Solid End With 

可重复的代码:以下R代码将用条形图设置excel工作表

 # Load package and helper functions - see http://www.omegahat.org/RDCOMClient require(RDCOMClient) source("http://www.omegahat.org/RDCOMClient/examples/excelUtils.R") # Create Excel application xls <- COMCreate("Excel.Application") # Make Excel workbook visible to user xls[["Visible"]] <- TRUE # Add a worksheet to the workbook wb = xls[["Workbooks"]]$Add(1) # Add data.frame to worksheet (Hishest Qualification of Job Applicants by Sex) df <- data.frame(Degree=c("BSc", "MSc", "PhD"), Male=c(322, 107, 39), Female=c(251, 128, 25)) exportDataFrame(df, at = wb$ActiveSheet()$Range("A1")) # Add Chart chart.display.range <- wb$ActiveSheet()$Range("E2:M20") wb$ActiveSheet()$Range("A1:C4")$Select() wb$ActiveSheet()$Shapes()$AddChart(Top = chart.display.range$Top(), Left = chart.display.range$Left(), Height = chart.display.range$Height(), Width = chart.display.range$Width())$Select() 

到目前为止我所做的: VBA代码的前两行很容易翻译成R:

 # Activate chart wb$ActiveSheet()$ChartObjects("Chart 1")$Activate() # Select the Male data column male <- wb$ActiveChart()$SeriesCollection(1) male$Select() 

然后为了结构

 # bar colour to be changed (this is a guess) bar <- male$Selection()$Format()$Fill() 

这会导致以下错误:

 #Error in .COM(x, name, ...) : # Cannot locate 0 name(s) Selection in COM object (status = -2147352570) 

我正在翻译的“select”不应该被使用? 我不知道从哪里去,但我认为,一旦我修复上面的错误,那么我会做下面的事情:

 bar[["Visible"]] = 1 bar[["ForeColor"]][["ObjectThemeColor"]] = 5 bar[["ForeColor"]][["TintAndShade"]] = 0 bar[["ForeColor"]][["Brightness"]] = 0 

提前致谢!

PS我知道可能有一个选项来导出一个R图到Excel中,但我更有兴趣试图找出如何解释“与”function结构。

PPS我使用的是Windows 7 x64,x86_64-w64-mingw32 / x64(64位),R 3.0.1,RDCOMClient_0.93-0.1

 bar <- male$Format()$Fill() 

代替

 bar <- male$Selection()$Format()$Fill()