首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DescTools::XLGetRange()失败,并出现sel$Cells()错误:尝试应用非函数

DescTools::XLGetRange()失败,并出现sel$Cells()错误:尝试应用非函数
EN

Stack Overflow用户
提问于 2018-07-04 15:36:11
回答 3查看 354关注 0票数 3

我已经安装了这些包:

代码语言:javascript
复制
install.packages("DescTools")
install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")

我已经运行Excel并选择了一系列值。

然后我在RStudio中运行以下代码:

代码语言:javascript
复制
library(DescTools)
BMI <- XLGetRange(header=TRUE)

我收到这个错误消息:

代码语言:javascript
复制
Loading required namespace: RDCOMClient
Error in sel$Cells() : attempt to apply non-function

当我运行这段代码时:

代码语言:javascript
复制
BMI <- XLGetRange(file="C:/Users/path/Excel to R.xlsx", sheet = "Sheet1", range="A1:B21")

它工作得很好。

从Excel导入数据时出错,因为您在运行的Excel应用程序中选择了一个区域。

EN

回答 3

Stack Overflow用户

发布于 2018-07-04 15:44:32

您可能忘记了调用库函数或在excel表格中选择范围。

在excel文件的sheet1中选择范围A1:B21,然后运行以下代码:

代码语言:javascript
复制
install.packages("DescTools")
install.packages("RDCOMClient")

library(DescTools)
library(RDCOMClient)

BMI <- XLGetRange(header=TRUE)
票数 0
EN

Stack Overflow用户

发布于 2018-07-07 15:03:07

我检查了XLGetRange()的源代码

代码语言:javascript
复制
......
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()返回

代码语言:javascript
复制
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>

xl$ActiveSheet()返回空xl$Selection()返回空

当我终止Excel应用程序时。

xl <- GetCurrXL()仍然返回

代码语言:javascript
复制
An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>

我决定重启我的笔记本电脑并启动RStudio。

现在它可以正常工作了

代码语言:javascript
复制
library(DescTools)
BMI <- XLGetRange(header=TRUE)

BMI返回Excel中选定的单元格范围。

票数 0
EN

Stack Overflow用户

发布于 2020-01-28 21:04:17

当excel实例在后台保持不可见时,就会发生此错误。函数GetNewXL尝试获取新实例的句柄,但不知何故没有正确获取。如果看到此错误,请关闭所有正在运行的Excel任务,然后运行DescTools::XLKill(),这将以不可见的方式结束所有正在运行的Excel实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51168242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档