【LibreOffice】Calc:保存と同時にCSV出力する
出力ボタンを用意せず、ドキュメント保存時に全てのシートをCSV出力する。
ちらを参考に少し改造しています。
Sub OutputCSV
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oSheet as object
Dim args(1) as new com.sun.star.beans.PropertyValue
For i = 0 To ThisComponent.getSheets().GetCount() - 1
oSheet = ThisComponent.getSheets().getByIndex(i)
ThisComponent.CurrentController.setActiveSheet(oSheet)
args(0).Name = "FilterName"
args(0).Value = "Text - txt - csv (StarCalc)"
args(1).Name = "FilterOptions"
rem カンマ区切り
args(1).Value = "44,34,76,1,,0,false,true,true,false"
rem タブ区切り
rem args(1).Value = "9,34,76,1,,0,false,true,true,false"
oURL = ThisComponent.getURL()
FileName = GetFileNameWithoutExtension(oURL,"/")
path = Left(oURL, Len(oURL) - Len(FileName) - 4) + oSheet.Name + ".csv"
ThisComponent.storeToURL(path, args())
Next
End Sub
特徴
- カンマ区切りのCSVフィルが生成される
- 出力されるファイル名は[シート名] + “.csv"。
- タブ区切りにしたい場合はコメントアウトしている行と入れ替える。