【LibreOffice】Calc:保存と同時にCSV出力する

DEVELOP, LibreOffice

出力ボタンを用意せず、ドキュメント保存時に全てのシートをCSV出力する。

LibreOffice Calcでドキュメント保存と同時にCSV形式でも保存する – Qiita

ちらを参考に少し改造しています。

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"。
  • タブ区切りにしたい場合はコメントアウトしている行と入れ替える。

Posted by kazupon