我正在运行R版本3.5.0
我已经安装了软件包:
install.packages("DescTools")
install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")
我已经运行Excel并选择了一个值范围。
然后我在RStudio中运行以下代码:
library(DescTools)
BMI <- XLGetRange(header=TRUE)
我收到此错误消息:
Loading required namespace: RDCOMClient
Error in sel$Cells() : attempt to apply non-function
当我运行此代码时:
BMI <- XLGetRange(file="C:/Users/path/Excel to R.xlsx", sheet = "Sheet1", range="A1:B21")
它工作正常。
从Excel导入数据时,您在运行的Excel应用程序中选择一个范围时出错。
在解决此问题方面将提供帮助。
答案 0 :(得分:0)
您可能忘记了调用库函数或在Excel工作表中选择范围
在excel文件的sheet1中选择范围A1:B21,然后运行以下代码:
install.packages("DescTools")
install.packages("RDCOMClient")
library(DescTools)
library(RDCOMClient)
BMI <- XLGetRange(header=TRUE)
答案 1 :(得分:0)
我检查了XLGetRange()的源代码
<?Php $_POST["type"]; ?>
xl <-GetCurrXL()返回
......
if(is.null(file)){
xl <- GetCurrXL()
ws <- xl$ActiveSheet()
if(is.null(range)) {
# if there is a selection in XL then use it, if only one cell selected use currentregion
sel <- xl$Selection()
if(sel$Cells()$Count() == 1 ){
range <- xl$ActiveCell()$CurrentRegion()$Address(FALSE, FALSE)
}
.....
xl $ ActiveSheet()返回NULL xl $ Selection()返回NULL
当我终止Excel应用程序时。
xl <-GetCurrXL()仍然返回
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>
我决定重新启动笔记本电脑并启动RStudio。
现在它可以正常工作了
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>
BMI返回Excel中选定的单元格范围。
答案 2 :(得分:0)
当excel实例在后台不可见时,会发生此错误。函数GetNewXL试图获取新实例的句柄,但由于某种原因无法正确获取它。 如果看到此错误,请关闭所有正在运行的Excel任务,然后运行DescTools :: XLKill(),这将终止所有在无形中运行的Excel实例。