フィールド 
挿入 - フィールド - その他... から利用できるフィールド。
フィールドのサービス名で TextField となっているものは利用しないほうがいいようです。サービス名の付け方の問題で削除されるようです。(サービスをインスタンス化するときにサービス名は文字の大小を区別されます)
フィールドサービス名一覧 
サービス名 | 説明 |
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.DDE | DDE |
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.Bibliography | Bibliography |
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 | コメントフィールド |
ドキュメント 
ドキュメント自体の情報などのフィールド。
ファイル名 
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
|
ページ番号 
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
|
ユーザー/著者 
著者名を表示。
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
|
差出人 
ユーザーの種々のデータを表示するフィールド。
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
|
章 
現在の章データを表示。
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
|
統計 
トータルページ数、段落、語句、文字、表、図、オブジェクト数を表示するフィールド。上記表から利用したいサービスを見付けて下さい。
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
|
日付と時刻 
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
.IsDate = True .NumberFormat = 40 .IsFixed = True End With
oText.insertTextContent(oText.getEnd(), oField, False)
End Sub
|
参照 
参照マークの挿入 
参照マークを設定します。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
|
参照マークコンテナ 
参照マークは 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
|
参照マークの削除 
参照マークは他のテキストコンテントと同じように削除します。マークを削除するとアンカーされていたテキスト範囲に含まれる文字列も消えてしまいます。
0
1
2
3
4
5
6
| | sub RemoveReferenceMark
oDoc = ThisComponent
oText = oDoc.getText()
oReferenceMarks = oDoc.getReferenceMarks()
oText.removeTextContent(oReferenceMarks.getByName("Item"))
end sub
|
参照の挿入 
参照マークを挿入して作成したマークを参照して内容またはページ番号などを表示するフィールドを挿入します。挿入後に 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 の定数で指定します。
見出し参照 
SourceName が __RefHeading__923_509323855 の様になっていてこれの取得方法が不明。
番号付き段落参照 
__RefNumPara__991_509323855 同上。
図参照 
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
|
ブックマーク参照 
ブックマーク位置を参照します。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
|
機能 
入力フィールド 
クリックすると入力用ダイアログが開いてユーザーに入力させるフィールド。
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
|
選択項目 
ユーザーがリストから選択するフィールド。
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
|
マクロの実行 
マクロを実行するフィールド。
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" .Hint = "View Text" End With
oText.insertTextContent(oViewCursor, oReference, False)
end sub
|
プレースホルダ 
テキストや図、表などを挿入させるためのフィールド。挿入する内容の種類は 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
|
組み文字 
六文字までを組み合わせた文字を表示するフィールド。
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
|
隠しテキストフィールド 
条件が 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
|
ドキュメント情報 
キーワード、コメント、タイトル、テーマ、リビジョン番号、情報は同じようにして挿入できます。利用するフィールドのサービスに従って挿入できる情報が異なります。
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
|
作成、前回の印刷、変更フィールドは表示する項目をサービス名で選択できます。上記の表参照。
変数 
変数設定フィールド 
新しい変数を作成します。新しい変数用の 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
|
変数表示フィールド 
変数設定フィールドで作成した変数の値を表示するフィールド。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 フィールド 
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
|
数式フィールド 
変数を利用した計算結果を表示するフィールド。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
|
連番 
図や表などの番号を通しで付けるときに使うフィールド。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 メソッドで利用するフィールドマスターを設定しなければエラーになります。
データベース 