我已经安装了这些包:
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应用程序中选择了一个区域。
发布于 2018-07-04 15:44:32
您可能忘记了调用库函数或在excel表格中选择范围。
在excel文件的sheet1中选择范围A1:B21,然后运行以下代码:
install.packages("DescTools")
install.packages("RDCOMClient")
library(DescTools)
library(RDCOMClient)
BMI <- XLGetRange(header=TRUE)发布于 2018-07-07 15:03:07
我检查了XLGetRange()的源代码
......
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 <- GetCurrXL()返回
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>xl$ActiveSheet()返回空xl$Selection()返回空
当我终止Excel应用程序时。
xl <- GetCurrXL()仍然返回
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>我决定重启我的笔记本电脑并启动RStudio。
现在它可以正常工作了
library(DescTools)
BMI <- XLGetRange(header=TRUE)BMI返回Excel中选定的单元格范围。
发布于 2020-01-28 21:04:17
当excel实例在后台保持不可见时,就会发生此错误。函数GetNewXL尝试获取新实例的句柄,但不知何故没有正确获取。如果看到此错误,请关闭所有正在运行的Excel任务,然后运行DescTools::XLKill(),这将以不可见的方式结束所有正在运行的Excel实例。
https://stackoverflow.com/questions/51168242
复制相似问题