不器用(TOT) エンジニアの気ままにプログラミング

~考え、作って、また考える~

RubyでExcel操作メモ_007_シートの削除

Rubyから「win32ole」というのを使って、
色々と操作できるようなので、
使ってみたときのメモを残していく。

今回はシートの削除。

 

Rubyのソース>

#! ruby -Ks
require 'win32ole'

class FileCls
    INFILENAME    =  'C:\\rb\\file.xlsx'
    CHKNAME       =  'shtname'
   
    @@aryData     = []
   
    def self.getary(book)
        book.sheets.each do |sht|
            @@aryData << sht.name
        end
        return @@aryData
    end
   
    def self.existname(name)
        @@aryData.each do |shtname|
            if shtname == name then
                @@aryData.delete(name)
                return true
            end
        end
        return false
    end
end

app     = WIN32OLE.new('Excel.Application')
app.DisplayAlerts = false
inpath  = FileCls::INFILENAME
inbook  = app.Workbooks.Open(inpath)
aryName = FileCls::getary(inbook)

if FileCls::existname(FileCls::CHKNAME) then
    aryName.each do |name|
        inbook.sheets(name).delete
    end
end

inbook.save
inbook.close(true)
app.quit

 

処理的には指定のシート名以外のシートは

すべて削除する処理を行っている。

 

先頭の宣言、

#! ruby -Ks

は日本語を扱うための記載。

 

また、削除時にファイルの更新を行う際、

確認ダイアログの表示を行いたくないので、

app.DisplayAlerts = false

とアラートの表示を止めている。