2017-12-21 10 views
2

一連のExcelファイルでセルのブロックをロックし、各ファイルを保護して元の場所に保存しようとしています。私は、すべての書式のそれらのセルを列をロックすることを除いて、あらゆる方法で動作するコードを持っています。 xlsxパッケージ内で手動でフォーマットを再作成することはできません。それぞれのファイルが少し異なるからです。書式設定を維持しながら、特定のセルをRからExcelファイルにロックする

私はXLConnectを使用してフォーマットせずにExcelにデータを出力する方法を知っていますが、XLConnectをロックしてワークブックを保護することはできません。ですから、私は、XLConnectを使ってセルをロックダウンするか、xlsxを使って書式を上書きせずにセルをロックするのを助けてくれるのか探しています。私は私が最終的に持っているのxlsxとXLConnectの周りに行くことによって自分の答えを見つけたかもしれないと思う

wb <- loadWorkbook(file.path) 
sheets <- getSheets(wb) 
sh <- sheets[[1]] 

lock <- CellStyle(wb, cellProtection = CellProtection(locked = TRUE)) 
rows <- getRows(sh, rowIndex = 9:50) 
cells <- getCells(rows, colIndex = 5:6) 

lapply(names(cells), function(ii) setCellStyle(cells[[ii]], lock)) 
.jcall(sh, "V", "protectSheet", "[email protected]") 

saveWorkbook(wb, file.path) 

答えて

0

はここ(のxlsxパッケージを使用して)私の現在のコードです。代わりに、私は、VBAマクロを書いた:

ActiveSheet.Unprotect ("[email protected]") 
Range("E8:F50").Locked = True 
ActiveSheet.Protect ("[email protected]") 

を、次いで、異なるシートを循環、R(RDCOMClientを使用して)マクロと呼ば

xlApp <- COMCreate("Excel.Application") 

xlWbk <- xlApp$Workbooks()$Open(paste0(temp.path)) 
xlApp$Run("LockColumns") 
xlWbk$Close(TRUE) 
xlApp$Quit() 
関連する問題