1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
# On load les libraries nécessairent, attention rcom est soumis à licence, sans elle pas possible d'exécuter ce script
library("rcom")
# ..............................................
# Création d'un classeur avec 5 feuilles
xl <<- comCreateObject("Excel.Application")
sheets = paste("Sheet", 1:5, sep ="")
length(sheets) -> n
xl[["SheetsInNewWorkbook"]] -> save
xl[["SheetsInNewWorkbook"]] <- n
xl[["Workbooks"]]$Add() -> wb
lapply(1:n, function(i) {
comSetProperty(wb[["Worksheets", i]],"Name",sheets[i])
wb[["Worksheets", i]] -> ws
ws[["Name"]] <- sheets[i]
return(ws)
ws <- NULL
} ) -> Sheets
names(Sheets) <- sheets
xl[["SheetsInNewWorkbook"]] <- save
wb$SaveAs(path) -> ans
# On dispose du fichier Excel wb créé avec 5 feuilles vides
# ..............................................
# Ecrire dans ce fichier
# Maintenant j'essaye de rajouter des données/formules à une feuilles,
# pour cela je souhaite définir la range dans laquelle écrire les données
ws <- wb$Sheet1
# cs définit les index de ma range (cellule de départ et de fin)
cs <- list(c(1, 1),c(2,2))
# J'essaye de définir la range à partir de cs
# Acienne méthode qui ne marche plus sur les nouvelles versions de R et rcom
rr <- ws[["Range", ws[["Cells", cs[[1]][1], cs[[1]][2] ]],
ws[["Cells", cs[[2]][1], cs[[2]][2] ]] ]]
# renvoi cette erreur
Error in `[[.COMObject`(ws, "Range", ws[["Cells", cs[[1]][1], cs[[1]][2]]], :
LENGTH or similar applied to externalptr object
Calls: [[ -> [[.COMObject -> .Call
# Méthodes testées renvoyant la même erreur
rr <- comGetProperty(ws,"Range",ws[["Cells", cs[[1]][1], cs[[1]][2] ]],ws[["Cells", cs[[2]][1], cs[[2]][2] ]])
rr <- comGetProperty(ws,"range",comGetProperty(ws,"Cells", cs[[1]][1], cs[[1]][2] ),comGetProperty(ws,"Cells", cs[[2]][1], cs[[2]][2] )) |
Partager