OpenOffice.orgメモ

OpenOffice.orgで開いている表計算シートの全タブをCSVで保存するマクロ改。
デフォルトでカレントディレクトリを選択するように変更&選択ダイアログを「キャンセル」すると

ちゃんとキャンセルされるように設定。

REM  *****  BASIC  *****

 
Sub Main
 
End Sub
 
Sub Macro1
 
End Sub
 
Sub SaveAllSheetAsCSV
Dim oDoc As Object
 
  oDoc = ThisComponent
 
  Dim oCController as object
  oCController = oDoc.CurrentController
 
  If oDoc.supportsService( “com.sun.star.sheet.SpreadsheetDocument” ) Then
‘    MsgBox “Supported”
 
‘    MsgBox oDoc.URL
 
    Dim oSheets As Object
    oSheets = oDoc.getSheets()
 
    Dim oFolderPicker As Object
    oFolderPicker = createUnoService(“com.sun.star.ui.dialogs.FolderPicker”)
    oFolderPicker.setDisplayDirectory(oDoc.URL)
 
    if oFolderPicker.execute() = 0 Then
        Exit Sub
    End If
 
‘    MsgBox oFolderPicker.getDirectory()
 
    Dim aArgs(1) As New com.sun.star.beans.PropertyValue
    aArgs(0).Name = “FilterName”
    aArgs(0).Value = “Text – txt – csv (StarCalc)”
    aArgs(1).Name = “FilterOptions”
    aArgs(1).Value = “44,34,76”
 
    Dim SaveDir As String
    SaveDir = oFolderPicker.getDirectory()
    For i% = 0 To oSheets.getCount() – 1
 
      Dim SaveURL As String
      SaveURL = SaveDir + “/” + oSheets.getByIndex( i ).getName() + “.csv”
 
      oCController.ActiveSheet = oSheets.getByIndex( i )
      MsgBox SaveURL
 
      oDoc.storeAsURL( ConvertToURL(SaveURL), aArgs() )
 
    Next i
 
    oCController.ActiveSheet = oSheets.getByIndex( 0 )
  Else
    MsgBox “Document is not a spreadsheet.”
  End If
 
End Sub