インデザインスクリプト
2016/04/01
22 インデザインスクリプト 初級講座 全ページのテキストフレームを処理する
管理者用今までに紹介したスクリプトを使って色々な事が出来ます。
今回は、仕事の中で実際に必要になったスクリプトの一部を抜き出して、テンプレートとして使える形にしたので紹介します。
ドキメントに含まれる全てのテキストフレームに対して処理するため、テンプレートとして使えるスクリプトです。
msgboxを使って、テキストフレームの内容を表示しているだけですが、この部分を書換える事により、フレームの座標を変えて移動したり、文字フォントを変えたり、様々なことができます。
実践に使えると思います。
また、最後のページで、このテンプレートの一部を書換えて、実際に使ったスクリプトを紹介します。
全ページ、全テキストフレーム操作用テンプレート
Private Sub CommandButton1_Click()
Dim myInDesign, myDocument, myTextFrame
Dim dir_mei, INDD_name
Dim p_cunt, page_no, Textf_cunt, texframe_no
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動する
Rem ファイルを開きます
dir_mei = "G:\NAVI_VBA"
INDD_name = dir_mei & "\テストサンプル.indd"
Set myDocument = myInDesign.Open(INDD_name)
p_cunt = myDocument.Pages.Count 'ドキメントのページ数
For page_no = 1 To p_cunt Step 1 '全ページの処理
Set myPage = myDocument.Pages.Item(page_no)
Textf_cunt = myPage.TextFrames.Count 'ページに含まれるテキストフレーム数
For texframe_no = 1 To Textf_cunt Step 1 '全フレームの処理
Set myTextFrame = myPage.TextFrames.Item(texframe_no)
Rem ===ここからテキストフレームに対する処理を記述します。================= '=================================================================
Rem テキストフレームの内容及び行数や文字数を表示しています。
MsgBox myTextFrame.Contents
MsgBox myTextFrame.Characters.Count
MsgBox myTextFrame.ParentStory.Paragraphs.Count
MsgBox myTextFrame.Lines.Count
Rem ===ここまでテキストフレームに対する処理を記述します。=================
'=================================================================
Next
Next
End Sub
全ページ、全テキストフレーム操作用テンプレートを使用した実践スクリプト
特定文字だけ、フォントを変えるスクリプト
j の文字だけフォントを変更します。
実行結果 jのフォントを変更しました。
全ページ、全テキストフレームを対象に実行します。
実践編も紹介しましたが、多くの場面で応用が利きます。
参考にしてください。
Private Sub CommandButton1_Click()
Dim myInDesign, myDocument, myTextFrame
Dim dir_mei, INDD_name
Dim p_cunt, page_no, Textf_cunt, texframe_no
Dim N, SerchDT, Moji, font_mei, font_W
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動する"
Rem ファイルを開きます
dir_mei = "G:\NAVI_VBA"
INDD_name = dir_mei & "\テストサンプル.indd"
Set myDocument = myInDesign.Open(INDD_name)
p_cunt = myDocument.Pages.Count 'ドキメントのページ数
For page_no = 1 To p_cunt Step 1 '全ページの処理
Set myPage = myDocument.Pages.Item(page_no)
Textf_cunt = myPage.TextFrames.Count 'ページに含まれるテキストフレーム数
For texframe_no = 1 To Textf_cunt Step 1 '全フレームの処理
cnt = 1
Set myTextFrame = myPage.TextFrames.Item(texframe_no)
Rem ここにテキストフレームに対する処理を記述します。
'=================================================================
SerchDT = myTextFrame.Contents
Moji = "j"
N = InStr(1, SerchDT, Moji)
Do While N > 0
Set myStartCharacter = myTextFrame.Characters.Item(N)
Set myEndCharacter = myTextFrame.Characters.Item(N)
font_mei = "A-OTF 新ゴ Pr6N" 'A-OTF 新ゴ Pr6N
font_W = "B" 'B
myTextFrame.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1).AppliedFont = font_mei
myTextFrame.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1).FontStyle = font_W
myTextFrame.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1).PointSize = 30
myTextFrame.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1).BaselineShift = "3pt"
N = InStr(N + 1, SerchDT, Moji)
Loop
'=================================================================
Next
Next
End Sub