DescTools :: XLGetRange () завершается ошибкой с sel $ Cells () Ошибка: попытка применить не-функцию - PullRequest
0 голосов
/ 04 июля 2018

Я использую версию 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.

Нужна помощь в решении этой проблемы.

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Я проверил исходный код 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 () возвращает </p>

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

xl $ ActiveSheet () возвращает NULL xl $ Selection () возвращает NULL

Когда я закрыл приложение Excel.

xl <- GetCurrXL () по-прежнему возвращает </p>

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

Я решил перезагрузить свой ноутбук и запустить RStudio.

Теперь он работает как обычно

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

ИМТ возвращает выбранный диапазон ячеек в Excel.

0 голосов
/ 04 июля 2018

Возможно, вы забыли вызвать библиотечную функцию или выбрать диапазон в листе Excel

Выберите диапазон A1: B21 на листе 1 вашего файла Excel и запустите следующий код:

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

library(DescTools)
library(RDCOMClient)

BMI <- XLGetRange(header=TRUE)
...