Top > OOobbs2 > 66

OOobbs2/66 Edit

  • サマリ: Concordance ファイル作成補助用拡張機能
  • 環境: Writer
  • 状態: 投稿
  • 投稿者: はにゃ??
  • 投稿日: 2007-09-12 (水) 12:24:06

質問 Edit

Writer ドキュメントで索引を作成するときに利用できるコンコーダンスファイルを Writer ドキュメント上で作成する補助をする拡張機能。

fileccindex-0.0.1.zip

回答 Edit

使い方

  • 動作にはPy-UNO が必要です。windows 環境ではインストール時に完全を選択しておれば使用できます。
  • ツールメニュー - 拡張機能マネージャからインストール
  • 一度 OOo を再起動させる。クイックスタートを利用しているときは一度終了させてください。
  • Writer を起動して、ツール - アドオン - ccindex を選択するとダイアログが表示されます。
  • 追記。 -- はにゃ?? 2007-09-13 (木) 00:29:06

選択範囲のインデックスマークを削除するマクロ。インデックスは最初に見つかったものを取得。

Sub RemoveIndexMarksFromSelection()
  Dim oDoc As Object
  oDoc = ThisComponent
  If NOT oDoc.supportsService("com.sun.star.text.TextDocument") Then Exit Sub
  
  oSelection = oDoc.getCurrentSelection()
  'sIndexName = "Alphabetical Index1"
  
  If oSelection.supportsService("com.sun.star.text.TextRanges") Then
    oIndexes = oDoc.DocumentIndexes
    If oIndexes.getCount() = 0 Then Exit Sub
    
    oIndex = GetDocumentIndex(oIndexes)
    'oIndex = oIndexes.getByName(sIndexName)
    If IsNull(oIndex) Then Exit Sub
    
    oSelected = oSelection.getByIndex(0)
    oText = oDoc.getText()
    
    oMarks = oIndex.DocumentIndexMarks
    For i = 0 To UBound(oMarks)
      On Error Goto Handler
      oRange = oMarks(i).Anchor
      nRS = oText.compareRegionStarts(oRange,oSelected)
      nRE = oText.compareRegionEnds(oRange,oSelected)
      If (nRS = -1 AND nRE = 1) Then
      	oText.removeTextContent(oMarks(i))
      Else
        If (nRS = 0 AND nRE = 1) OR (nRS = -1 AND nRE = 0) Then
          oText.removeTextContent(oMarks(i))
        End If
      End If
      Handler:
        Resume Next
    Next i
  End If
End Sub


Function GetDocumentIndex(oIndexes) As Object
  Dim oIndex As Object
  For i = 0 To oIndexes.getCount() -1
    oIdx = oIndexes.getByIndex(i)
    If oIdx.supportsService("com.sun.star.text.DocumentIndex") Then
      oIndex = oIdx
      Exit For
    End If
  Next i
  GetDocumentIndex = oIndex
End Function

ccindex と上記マクロを利用すれば、

  1. ドキュメントを用意
  2. ccindex でコンコーダンスファイルを作成
  3. インデックスを挿入
  4. コンコーダンスファイルの利用のチェックを外す
  5. インデックスのエントリーは残る
  6. 追加を手動で、削除は上記マクロ

残ったインデックスエントリーを編集するマクロが必要か・・・

日本語を利用するときのコンコーダンスファイルのエンコード

  • OOo 2.3rc2 + win vista: Shift_JIS
  • OOo 2.2.4 + Momonga linux 4: ファイルをマルチバイトとして読み込んでいない様子

感想,コメント,メモ Edit



Attach file: fileccindex-0.0.1.zip 640 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes