TOP > blog > 22 インデザインスクリプト 初級講座 全ページのテキストフレームを処理する
インデザインスクリプト
2016/04/01

22 インデザインスクリプト 初級講座 全ページのテキストフレームを処理する

管理者用
blog

今までに紹介したスクリプトを使って色々な事が出来ます。
今回は、仕事の中で実際に必要になったスクリプトの一部を抜き出して、テンプレートとして使える形にしたので紹介します。

ドキメントに含まれる全てのテキストフレームに対して処理するため、テンプレートとして使えるスクリプトです。
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

 

 

関連記事