3

我正在运行 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 导入数据时出错。

帮助解决这个问题将不胜感激。

4

3 回答 3

0

我检查了 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() 返回 NULL xl$Selection() 返回 NULL

当我终止 Excel 应用程序时。

xl <- GetCurrXL() 仍然返回

An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x000000000011b688>

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

现在它正常工作

library(DescTools)
BMI <- XLGetRange(header=TRUE)

BMI 返回 Excel 中选定的单元格区域。

于 2018-07-07T07:03:06.700 回答
0

您可能忘记调用库函数或在 Excel 表中选择范围

在 Excel 文件的 sheet1 中选择范围 A1:B21 并运行以下代码:

install.packages("DescTools")
install.packages("RDCOMClient")

library(DescTools)
library(RDCOMClient)

BMI <- XLGetRange(header=TRUE)
于 2018-07-04T07:44:31.867 回答
0

当 excel 实例在后台不可见时,会发生此错误。函数 GetNewXL 试图获取新实例的句柄,但不知何故无法正确获取它。如果您看到此错误,请关闭所有正在运行的 Excel 任务并运行 DescTools::XLKill(),这将结束所有 Excel 实例不可见地运行。

于 2020-01-28T13:04:17.150 回答