OpenOffice.org Basic
当ページ「OpenOffice.org Basic」はまもなく削除される予定です。理由は以下の通りです。
- 理由:(以前に誤って題名を設け、誤って文章を寄稿してしまった)
削除に同意されないのであれば、方針などを確認して、ページを適切なものに書き換えた上で、このテンプレートを取り除いてください。勝手に取り除いた場合、投稿ブロックされる恐れがあります。
StarSuite API と Universal Network Objects (UNO)
[編集]OpenOfficeの機能(ファイルの読み込み、保存、印刷等)や共通ダイアログ(ファイルを開くダイアログ等)を利用するために、StarSuite APIを用いることが出来ます。
StarSuite APIをOpenOffice BASICから用いるために、Universal Network Objects (UNO)インターフェースを用いることになります。
StarSuite 8 Basic プログラミングガイド OpenOffice API について
ファイルの読み書き
[編集]ファイルの読み書きは、com.sun.star.ucb.SimpleFileAccessインターフェースを用います。(もしくは、BASICの基本関数でデータチャネルを用いることも出来ます)
テキストファイルの読み込み
[編集]テキストファイルの読み込みは、com.sun.star.io.TextInputStreamインターフェースを用います。
Dim oFileAccess As Object
Dim oInputStream As Object
Dim sLineData As String
oFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = createUnoService("com.sun.star.io.TextInputStream")
' ファイルを読み取りモードで開く
oInputStream.setInputStream(oFileAccess.openFileRead("file:///c:/test.csv"))
' EOFを検出するまで、1行ずつ読み込む
Do While not oInputStream.isEOF()
sLineData = oInputStream.readLine()
'読み込まれた行データに対する処理を行う
Loop
' ファイルを閉じる
oInputStream.closeInput()
OpenOffice.org APIリファレンス
interface SimpleFileAccess > openFileRead
interface TextInputStream > readLine, isEOF
(参考) BASICの基本関数でデータチャネルを用いたテキストファイルの読み込み例
Dim hFileHandle As Integer
Dim sLineData As String
' 利用可能な次のファイルハンドルを得る
hFileHandle = FreeFile
' ファイルを読み取りモードで開く
Open "file:///c:/test.csv" for Input as #hFileHandle
' EOFを検出するまで、1行ずつ読み込む
Do While not Eof(#hFileHandle)
Line Input #hFileHandle, sLineData
'読み込まれた行データに対する処理を行う
Loop
' ファイルを閉じる
Close #hFileHandle
ファイルを開く・保存するダイアログ
[編集]ファイルを開く・保存するダイアログの表示は、com.sun.star.ui.dialogs.FilePickerサービスを用います。
Dim oFilePicker As Object
Dim nDlgResult As Integer
Dim sFiles() As String
Dim sFilename As String
oFilePicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
' ダイアログの初期化を行います
oFilePicker.Title = "ダイアログに表示するタイトルです"
oFilePicker.appendFilter( "全てのファイル (*.*)", "*.*" )
oFilePicker.appendFilter( "CSVファイル (*.csv)", "*.csv" )
oFilePicker.setCurrentFilter( "CSVファイル (*.csv)" )
' 「保存する」ダイアログの場合、このように設定します
oFilePicker.initialize(Array(_
com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE))
nDlgResult = oFilePicker.execute()
' 開く(OK)が押された場合は、1が返されます
sFiles() = oFilePicker.getFiles()
sFilename = sFiles(0)
OpenOffice.org APIリファレンス service FilePicker