*フィールド [#c5f053d5] 挿入 - フィールド - その他... から利用できるフィールド。 フィールドのサービス名で TextField となっているものは利用しないほうがいいようです。サービス名の付け方の問題で削除されるようです。(サービスをインスタンス化するときにサービス名は文字の大小を区別されます) #contents **フィールドサービス名一覧 [#we723a50] |サービス名|説明| |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|コメントフィールド| **ドキュメント [#eeffe07e] ドキュメント自体の情報などのフィールド。 *** ファイル名 [#k162c211] #code(basic){{ 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 }} *** ページ番号 [#u8429cea] #code(basic){{ 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 }} *** ユーザー/著者 [#m2ba6bf1] 著者名を表示。 #code(basic){{ 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 }} *** 差出人 [#f7d07ef4] ユーザーの種々のデータを表示するフィールド。 #code(basic){{ 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 }} *** 章 [#fceec466] 現在の章データを表示。 #code(basic){{ 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 }} *** 統計 [#c2dcb238] トータルページ数、段落、語句、文字、表、図、オブジェクト数を表示するフィールド。上記表から利用したいサービスを見付けて下さい。 #code(basic){{ 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 }} *** 日付と時刻 [#bb1682bf] #code(basic){{ 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 }} **参照 [#lb947ba0] *** 参照マークの挿入 [#b5d34b2c] 参照マークを設定します。com.sun.star.text.ReferenceMark サービスのインスタンスをテキストコンテントとして挿入します。挿入するテキスト範囲を置き換える形にするとそのテキスト範囲のテキストを持った参照マークが作成されます。 #code(basic){{ 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 }} *** 参照マークコンテナ [#aa44905f] 参照マークは ReferenceMarks コンテナで一覧を取得できます。このコンテナで追加や削除はできません。 #code(basic){{ 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 }} *** 参照マークの削除 [#g09c1c99] 参照マークは他のテキストコンテントと同じように削除します。マークを削除するとアンカーされていたテキスト範囲に含まれる文字列も消えてしまいます。 #code(basic){{ sub RemoveReferenceMark oDoc = ThisComponent oText = oDoc.getText() oReferenceMarks = oDoc.getReferenceMarks() oText.removeTextContent(oReferenceMarks.getByName("Item")) end sub }} *** 参照の挿入 [#n0bf1ad8] 参照マークを挿入して作成したマークを参照して内容またはページ番号などを表示するフィールドを挿入します。挿入後に F9 を押してフィールドを更新しないと内容が表示されません。 #code(basic){{ 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 の定数で指定します。 *** 見出し参照 [#x709c93d] SourceName が __RefHeading__923_509323855 の様になっていてこれの取得方法が不明。 *** 番号付き段落参照 [#x4f391d4] __RefNumPara__991_509323855 同上。 *** 図参照 [#l0b95ea0] SourceName プロパティに "Illustration" を指定します。ReferenceFieldSource プロパティには SEQUENCE_FIELD を指定し、SequenceNumber で図のインデックスを指定します。 #code(basic){{ 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 }} *** ブックマーク参照 [#kb30257d] ブックマーク位置を参照します。SourceName プロパティにブックマーク名を指定、ReferenceFieldSource に BOOKMARK を設定します。 #code(basic){{ 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 }} **機能 [#ea94b9a6] *** 入力フィールド [#sff0b500] クリックすると入力用ダイアログが開いてユーザーに入力させるフィールド。 #code(basic){{ 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 }} *** 選択項目 [#yee521a5] ユーザーがリストから選択するフィールド。 #code(basic){{ 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 }} *** マクロの実行 [#w9f874f1] マクロを実行するフィールド。 #code(basic){{ 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 }} *** プレースホルダ [#a73feaed] テキストや図、表などを挿入させるためのフィールド。挿入する内容の種類は PlaceHolderType プロパティに com.sun.star.text.PlaceholderType の定数で指定します。 #code(basic){{ 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 }} *** 組み文字 [#c24197ae] 六文字までを組み合わせた文字を表示するフィールド。 #code(basic){{ 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 }} *** 隠しテキストフィールド [#e7f97e94] 条件が True のときに非表示になるテキストフィールド。 #code(basic){{ 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 }} **ドキュメント情報 [#he35574e] キーワード、コメント、タイトル、テーマ、リビジョン番号、情報は同じようにして挿入できます。利用するフィールドのサービスに従って挿入できる情報が異なります。 #code(ob){{ 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 }} 作成、前回の印刷、変更フィールドは表示する項目をサービス名で選択できます。上記の表参照。 **変数 [#mfdef299] *** 変数設定フィールド [#x4231994] 新しい変数を作成します。新しい変数用の FieldMaster.SetExpression を作成、変数名を指定してフィールドに設定します。FieldMaster 名が変数名になります。 #code(basic){{ 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 }} *** 変数表示フィールド [#i0aa37cd] 変数設定フィールドで作成した変数の値を表示するフィールド。Content プロパティに表示する変数名を指定します。 #code(basic){{ 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 フィールド [#vb9ecae9] #code(basic){{ 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 }} *** 数式フィールド [#rf9758dd] 変数を利用した計算結果を表示するフィールド。SubType に FORMULA を指定します。 #code(basic){{ 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 }} *** 連番 [#i26173dc] 図や表などの番号を通しで付けるときに使うフィールド。TextFieldMaster を利用して通し番号の方法などが管理されます。 |フィールドマスタ|変数の種類|h |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 プロパティを指定できます。これらはドキュメント全体で一定のものが利用されるため一度変更すると他のフィールドにも影響を及ぼします。 #code(basic){{ 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 メソッドで利用するフィールドマスターを設定しなければエラーになります。 **データベース [#x30e53a5] |