即時削除

当ページ「OpenOffice.org Basic」はまもなく削除される予定です。理由は以下の通りです。

理由:(以前に誤って題名を設け、誤って文章を寄稿してしまった)

削除に同意されないのであれば、方針などを確認して、ページを適切なものに書き換えた上で、このテンプレートを取り除いてください。勝手に取り除いた場合、投稿ブロックされる恐れがあります。

OpenOffice.org > 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

関連文書

編集

参考URL

編集
このページ「OpenOffice.org Basic」は、まだ書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークページへどうぞ。