GroovyでExcelファイルの印刷フッター設定を変更する
前回に引き続き、今回もエクセルねたです。
すべての単体テスト仕様書に対して、以下の箇所を変更してほしいという要望がありました。
- 表紙タイトル
- 表紙シート以外の印刷フッター設定
もちろん手作業ではしんどいので、 Groovy でやってしまうことに。
VBAで組んだらいいのかもしれませんが、やはり使い慣れた言語のほうがループやif文といったちょっとしたことや、ライブラリも頭に入っているためスピーティに作れます。
ちょっとした作業を自動化する際には馬鹿にできないですよね。
「06.単体テスト」というフォルダ以下のすべてのファイルを対象にしています。
(対象のファイルは先頭が"PT_"ではじまり、最後が".xls"となっているものに絞っています。これが単体テスト仕様書。)
setAllExcel.groovy
import org.codehaus.groovy.scriptom.*
import org.codehaus.groovy.scriptom.tlb.office.MsoAutomationSecurity
import org.codehaus.groovy.scriptom.tlb.office.MsoFeatureInstall
import org.codehaus.groovy.scriptom.tlb.office2003.excel.*
Scriptom.inApartment {
// おまじない
def xlApp = new ActiveXObject('Excel.Application')
xlApp.visible = false
xlApp.displayAlerts = false
xlApp.automationSecurity = MsoAutomationSecurity.msoAutomationSecurityForceDisable
xlApp.alertBeforeOverwriting = false
xlApp.askToUpdateLinks = false;
xlApp.featureInstall = MsoFeatureInstall.msoFeatureInstallNone
def filelist = []
new File(/C:tempproject06.単体試験/).eachFileRecurse { file ->
if (file.name =~ /^PT_.+?.xls$/)
filelist << file
}
filelist.sort { it.name }.each { file ->
println file.name
def workbook = xlApp.workbooks.open(file.path)
workbook.sheets.findAll { it.name != "表紙" }.each { sheet ->
sheet.range("BY" + 1).value = execDateList.max()
sheet.PageSetup.CenterFooter = "&P-1 / &N-1 "
}
try {
workbook.names("名前定義1").delete()
workbook.names("名前定義2").delete()
} catch (Exception e) {
println "例外発生"
}
//workbook.SaveAs(file.path + ".xls")
//workbook.SaveAs(file.path)
workbook.save()
workbook.close()
}
xlApp.visible = true
}
ディスカッション
コメント一覧
まだ、コメントがありません