Top > OOoBasic > Writer > Field

フィールド Edit

挿入 - フィールド - その他... から利用できるフィールド。

フィールドのサービス名で TextField となっているものは利用しないほうがいいようです。サービス名の付け方の問題で削除されるようです。(サービスをインスタンス化するときにサービス名は文字の大小を区別されます)

フィールドサービス名一覧 Edit

サービス名説明
com.sun.star.text.textfield.TemplateNameテンプレート
com.sun.star.text.textfield.FileNameファイル名
com.sun.star.text.textfield.PageNumberページ番号
com.sun.star.text.textfield.Chapter
com.sun.star.text.textfield.Authorユーザー
com.sun.star.text.textfield.PageCountページ数
com.sun.star.text.textfield.ParagraphCount段落数
com.sun.star.text.textfield.WordCount単語数
com.sun.star.text.textfield.CharacterCount文字数
com.sun.star.text.textfield.TableCount表数
com.sun.star.text.textfield.EmbeddedObjectCountオブジェクト数
com.sun.star.text.textfield.GraphicObjectCount画像数
com.sun.star.text.textfield.DateTime日付と時間
----
com.sun.star.text.textfield.docinfo.KeyWordsキーワード
com.sun.star.text.textfield.docinfo.Descriptionコメント
com.sun.star.text.textfield.docinfo.Titleタイトル
com.sun.star.text.textfield.docinfo.Subjectテーマ
com.sun.star.text.textfield.docinfo.Revisionリビジョン番号
com.sun.star.text.textfield.docinfo.EditTime合計編集時間
com.sun.star.text.textfield.docinfo.CreateAuthor作成者
com.sun.star.text.textfield.docinfo.CreateDateTime作成日時
com.sun.star.text.textfield.docinfo.Info0情報0
com.sun.star.text.textfield.docinfo.Info1情報1
com.sun.star.text.textfield.docinfo.Info2情報2
com.sun.star.text.textfield.docinfo.Info3情報3
com.sun.star.text.textfield.docinfo.ChangeAuthor編集者
com.sun.star.text.textfield.docinfo.ChangeDateTime編集日時
com.sun.star.text.textfield.docinfo.PrintAuthor印刷者
com.sun.star.text.textfield.docinfo.PrintDateTime印刷日時
----
com.sun.star.text.textfield.GetReference参照
----
com.sun.star.text.textfield.ConditionalText条件付テキスト
com.sun.star.text.textfield.DropDownドロップダウンリスト
com.sun.star.text.textfield.InputUser入力フィールド
com.sun.star.text.textfield.Macroマクロ実行
com.sun.star.text.textfield.Scriptスクリプト実行
com.sun.star.text.textfield.JumpEditプレースホルダ
com.sun.star.text.textfield.CombinedCharacters組み合わせ文字
com.sun.star.text.textfield.HiddenText隠しテキスト
com.sun.star.text.textfield.HiddenParagraph隠し段落
----
com.sun.star.text.textfield.SetExpression変数の設定
com.sun.star.text.textfield.GetExpression変数の表示
com.sun.star.text.textfield.DDEDDE
com.sun.star.text.textfield.TableFormula表式
com.sun.star.text.textfield.Inputインプットフィールド
com.sun.star.text.textfield.ReferencePageGetページ変数の表示
com.sun.star.text.textfield.ReferencePageSetページ変数の設定
com.sun.star.text.textfield.ExtendedUserユーザー
----
com.sun.star.text.textfield.BibliographyBibliography
com.sun.star.text.textfield.Databaseデータベース
com.sun.star.text.textfield.DatabaseNameデータベース名
com.sun.star.text.textfield.DatabaseNextSet次のレコード
com.sun.star.text.textfield.DatabaseNumberOfSetレコード番号
com.sun.star.text.textfield.DatabaseSetNumber任意のレコード
com.sun.star.text.textfield.Annotationコメントフィールド

ドキュメント Edit

ドキュメント自体の情報などのフィールド。

ファイル名 Edit

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
Sub insert_FileName_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.FileName")
  With oField
    .FileFormat = com.sun.star.text.FilenameDisplayFormat.NAME ' 表示形式
    .IsFixed = False ' 内容を固定するかどうか
  End With
 
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

ページ番号 Edit

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
Sub insert_pagenumber_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.PageNumber")
  With oField
    .NumberingType = com.sun.star.style.NumberingType.ARABIC
    .SubType = com.sun.star.text.PageNumberType.NEXT
    .Offset = 0
    .UserText = ""
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

ユーザー/著者 Edit

著者名を表示。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
Sub insert_Author_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.Author")
  With oField
    .FullName = True ' 名前またはイニシャル
    .IsFixed = False ' 内容の固定
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

差出人 Edit

ユーザーの種々のデータを表示するフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
Sub insert_ExtendedUser_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.ExtendedUser")
  With oField
    .Content = "000-1234" ' 内容
    .UserDataType = com.sun.star.text.UserDataPart.ZIP ' データの形式
    .IsFixed = True ' 内容を固定
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

Edit

現在の章データを表示。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
Sub insert_Chapter_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.Chapter")
  With oField
    .ChapterFormat = com.sun.star.text.ChapterFormat.NAME
    .Level = 1
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

統計 Edit

トータルページ数、段落、語句、文字、表、図、オブジェクト数を表示するフィールド。上記表から利用したいサービスを見付けて下さい。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
Sub insert_PageCount_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.PageCount")
  With oField
    .NumberingType = com.sun.star.style.NumberingType.ARABIC
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

日付と時刻 Edit

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
Sub insert_DateTime_field
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.DateTime")
  With oField
    '.DateTimeValue = ... ' 現在以外の場合指定
    .IsDate = True ' 日付データのみを利用
    .NumberFormat = 40 ' 表示形式
    .IsFixed = True ' 固定
    '.Adjust = -10 ' 分の位の調整
  End With
  
  oText.insertTextContent(oText.getEnd(), oField, False)
End Sub

参照 Edit

参照マークの挿入 Edit

参照マークを設定します。com.sun.star.text.ReferenceMark サービスのインスタンスをテキストコンテントとして挿入します。挿入するテキスト範囲を置き換える形にするとそのテキスト範囲のテキストを持った参照マークが作成されます。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
sub InsertReferenceMark
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oMark = oDoc.createInstance("com.sun.star.text.ReferenceMark")
  oMark.setName("Item") ' マーク名を指定
  
  oText.insertTextContent(oViewCursor, oMark, True) ' マークで置換する
end sub

参照マークコンテナ Edit

参照マークは ReferenceMarks コンテナで一覧を取得できます。このコンテナで追加や削除はできません。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
sub ReferenceMarksContainer
  oDoc = ThisComponent
  oReferenceMarks = oDoc.getReferenceMarks()
  
  sNames = oReferenceMarks.getElementNames()
  for i = 0 To UBound(sNames) step 1
    msgbox sNames(i)
    oMark = oReferenceMarks.getByName(sNames(i))
    ' ...
  Next
end sub

参照マークの削除 Edit

参照マークは他のテキストコンテントと同じように削除します。マークを削除するとアンカーされていたテキスト範囲に含まれる文字列も消えてしまいます。

  0
  1
  2
  3
  4
  5
  6
sub RemoveReferenceMark
  oDoc = ThisComponent
  oText = oDoc.getText()
  oReferenceMarks = oDoc.getReferenceMarks()
  
  oText.removeTextContent(oReferenceMarks.getByName("Item"))
end sub

参照の挿入 Edit

参照マークを挿入して作成したマークを参照して内容またはページ番号などを表示するフィールドを挿入します。挿入後に F9 を押してフィールドを更新しないと内容が表示されません。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
sub InsertReference
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oReference = oDoc.createInstance("com.sun.star.text.textfield.GetReference")
  oReference.SourceName = "Item"
  oReference.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.TEXT
  oReference.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.REFERENCE_MARK
  
  oText.insertTextContent(oViewCursor, oReference, False)
end sub

表示する内容の形式は ReferenceFieldPart プロパティに com.sun.star.text.ReferenceFieldPart の定数で指定します。

見出し参照 Edit

SourceName が __RefHeading__923_509323855 の様になっていてこれの取得方法が不明。

番号付き段落参照 Edit

__RefNumPara__991_509323855 同上。

図参照 Edit

SourceName プロパティに "Illustration" を指定します。ReferenceFieldSource プロパティには SEQUENCE_FIELD を指定し、SequenceNumber で図のインデックスを指定します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
sub InsertIllustrationReference
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oReference = oDoc.createInstance("com.sun.star.text.textfield.GetReference")
  With oReference
    .SourceName = "Illustration"
    .ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.ONLY_SEQUENCE_NUMBER
    .ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.SEQUENCE_FIELD
    .SequenceNumber = 0
  End With
  
  oText.insertTextContent(oViewCursor, oReference, False)
end sub

ブックマーク参照 Edit

ブックマーク位置を参照します。SourceName プロパティにブックマーク名を指定、ReferenceFieldSource に BOOKMARK を設定します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
sub InsertBookmarkReference
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oReference = oDoc.createInstance("com.sun.star.text.textfield.GetReference")
  With oReference
    .SourceName = "parse"
    .ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.PAGE
    .ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
  End With
  
  oText.insertTextContent(oViewCursor, oReference, False)
end sub

機能 Edit

入力フィールド Edit

クリックすると入力用ダイアログが開いてユーザーに入力させるフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
sub InsertInputField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.Input")
  With oField
    .Hint = "Hint" ' ヒント
    .Content = "1234" ' 内容
    .Help = "..." ' 内部用
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

選択項目 Edit

ユーザーがリストから選択するフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
sub InsertDropDownField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  sItems = Array("item1", "item2")
  oField = oDoc.createInstance("com.sun.star.text.textfield.DropDown")
  With oField
    .Name = "NamedList"
    .Items = sItems ' リスト
    .SelectedItem = sItems(0) ' 選択された項目
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

マクロの実行 Edit

マクロを実行するフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
sub InsertMacroExecuteField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oReference = oDoc.createInstance("com.sun.star.text.textfield.Macro")
  With oReference
    .MacroName = "vnd.sun.star.script:spi.Module1.Main?language=Basic&location=application" ' マクロ URL
    .Hint = "View Text" ' 表示テキスト
  End With
  
  oText.insertTextContent(oViewCursor, oReference, False)
end sub

プレースホルダ Edit

テキストや図、表などを挿入させるためのフィールド。挿入する内容の種類は PlaceHolderType プロパティに com.sun.star.text.PlaceholderType の定数で指定します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
sub InsertJumpEditField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.JumpEdit")
  With oField
    .Hint = "Hint" ' ヒント
    .PlaceHolder = "UserText" ' フィールド名
    .PlaceHolderType = com.sun.star.text.PlaceholderType.TEXTFRAME
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

組み文字 Edit

六文字までを組み合わせた文字を表示するフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
sub InsertCombinedCharactersField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.CombinedCharacters")
  With oField
    .Content = "1234" ' 組み合わせる文字
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

隠しテキストフィールド Edit

条件が True のときに非表示になるテキストフィールド。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
sub ShowHiddenTextField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.HiddenText")
  With oField
    .Content = "Hidden!" ' 内容
    .Condition = "Hint" ' 条件
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

ドキュメント情報 Edit

キーワード、コメント、タイトル、テーマ、リビジョン番号、情報は同じようにして挿入できます。利用するフィールドのサービスに従って挿入できる情報が異なります。

  0
  1
  2
  3
  4
  5
  6
  7
  8
 Sub field_1
  oDoc = ThisComponent
  oText = oDoc.getText()
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.docinfo.Title")
  
  oText.insertTextContent(oText.getEnd(),oField,False)
 End Sub

作成、前回の印刷、変更フィールドは表示する項目をサービス名で選択できます。上記の表参照。

変数 Edit

変数設定フィールド Edit

新しい変数を作成します。新しい変数用の FieldMaster.SetExpression を作成、変数名を指定してフィールドに設定します。FieldMaster 名が変数名になります。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
sub SetVariableField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oFieldMaster = oDoc.createInstance("com.sun.star.text.fieldmaster.SetExpression")
  oFieldMaster.SubType = 0
  oFieldMaster.Name = "Hint" ' 変数名
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.SetExpression")
  With oField
    .Content = "1" ' 現在の値
    .NumberFormat = 0 ' 表示形式指定
  End With
  oField.attachTextFieldMaster(oFieldMaster)
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

変数表示フィールド Edit

変数設定フィールドで作成した変数の値を表示するフィールド。Content プロパティに表示する変数名を指定します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
sub ShowVariableField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.GetExpression")
  With oField
    .Content = "Hint"
    .NumberFormat = 0
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

DDE フィールド Edit

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
Sub InsertDDELinkField()
  oDoc = ThisComponent
  oText = oDoc.getText()
  oCursor = oText.createTextCursorByRange(oDoc.getCurrentController().getViewCursor())
  
  sName = "hoge"
  sFieldName = "com.sun.star.text.FieldMaster.DDE." & sName
  If NOT oDoc.getTextFieldMasters().hasByName(sFieldName) Then
  oDDEM = oDoc.createInstance("com.sun.star.text.FieldMaster.DDE")
  
  With oDDEM
    .DDECommandType = "soffice"
    .DDECommandFile = ConvertToURL("C:\doc2.ods")
    .DDECommandElement = "Sheet1.A1"
    .Name = sName
  End With
  Else
    oDDEM = oDoc.getTextFieldMasters().getByName(sFieldName)
  End If
  
  oDDEField = oDoc.createInstance("com.sun.star.text.textfield.DDE")
  oDDEField.attachTextFieldMaster(oDDEM)
  
  oText.insertTextContent(oCursor, oDDEField, False)
End Sub

数式フィールド Edit

変数を利用した計算結果を表示するフィールド。SubType に FORMULA を指定します。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
sub ShowFormulaResultField
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oField = oDoc.createInstance("com.sun.star.text.textfield.GetExpression")
  With oField
    .Content = "Hint + 10" ' 計算式
    .NumberFormat = 0
    .SubType = com.sun.star.text.SetVariableType.FORMULA
  End With
  
  oText.insertTextContent(oViewCursor, oField, False)
end sub

連番 Edit

図や表などの番号を通しで付けるときに使うフィールド。TextFieldMaster を利用して通し番号の方法などが管理されます。

フィールドマスタ変数の種類
com.sun.star.text.fieldmaster.SetExpression.Illustration
com.sun.star.text.fieldmaster.SetExpression.Table
com.sun.star.text.fieldmaster.SetExpression.Textテキスト
com.sun.star.text.fieldmaster.SetExpression.Drawing図形描写

以下の例では表の通し番号を挿入しています。フィールドマスタでは区切り記号 NumberingSeparator や章番号付け ChapterNumberingLevel プロパティを指定できます。これらはドキュメント全体で一定のものが利用されるため一度変更すると他のフィールドにも影響を及ぼします。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 Sub insertfield
  oDoc = ThisComponent
  oText = oDoc.getText()
  oFieldMaster = oDoc.getTextFieldMasters().getByName( _
      "com.sun.star.text.fieldmaster.SetExpression.Table")
  oFieldMaster.NumberingSeparator = " "
  oFieldMaster.ChapterNumberingLevel = 2
  
  oField = oDoc.createInstance( _
      "com.sun.star.text.textfield.SetExpression")
  oField.NumberFormat = 4
  oField.IsFixedLanguage = False
  oField.attachTextFieldMaster(oFieldMaster)
  
  oText.insertTextContent(oText.getEnd(), oField, False)
 End Sub

テキストに挿入する前にフィールドのインスタンスに attachTextFieldMaster メソッドで利用するフィールドマスターを設定しなければエラーになります。

データベース Edit


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