OpenOffice.orgメモ

2007年2月8日 17:16

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