TOP > blog > 7.インデザインスクリプト 初級講座(3)テキストフレーム操作
インデザインスクリプト
2016/01/10

7.インデザインスクリプト 初級講座(3)テキストフレーム操作

管理者用
blog

初級講座(3)では、組版に基本のテキストフレームをVBAでコントロールしてみます。

最後にスクリプト全体を表示してますので参照方

初級講座(2)と同様にVBA 関数の MsgBoxを使用して、各ステップ毎にメッセージを表示するようにしました。
MsgBoxで、次に実行する関数のメッセージが表示されます。
この時に、インデザインを確認してください。
前のメッセージの実行結果が見られます。

それではスタートして見ましょう

NAVI_IND_02_02.png

最初に、テンプレートとして保存していた、ドキュメントを開きます。

 NAVI_VBA_3_03000.JPG NAVI_VBA_3_03001.JPG

ドキュメントが開きますが、エクセル側には、次の [テキストフレームを作成]のメッセージが表示されてます。

この状態で、インデザインのウインドウを見てください。

ドキメントが開いているのが確認できるでしょう。

 

テキストフレームを作成します

 NAVI_VBA_3_03002.JPG 

NAVI_VBA_3_03004.JPG

 作成された、テキストフレームを選択してください。
テキストフレームの座標が、スクリプトで指示した数字と合っているか確認してください。


Rem テキストフレームサイズを設定
Set myTextFrame = myDocument.TextFrames.Add

haichi_1_YS = 70
haichi_1_XS = 20
haichi_1_YE = 120
haichi_1_XE = 100

myTextFrame.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")

 NAVI_VBA_3_03004_1.png

  

テキストフレームに文字を書き込みます。

 NAVI_VBA_3_03005.JPG

NAVI_VBA_3_03006.JPG

 

ここまでは、初級講座(2)で紹介してます

 

テキストフレームのサイズを変更します。

 NAVI_VBA_3_03007.JPG NAVI_VBA_3_03008.JPG


haichi_1_YS = 100
haichi_1_XS = 20
haichi_1_YE = 150
haichi_1_XE = 180

myTextFrame.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")

 サイズの変更とともに、位置を変更する事もできます。

 

テキストフレームを移動します。

Rem テキストフレームを移動させる。
mov_XS = 40
mov_YS = 150

myTextFrame.Move Array(CStr(mov_XS), CStr(mov_YS))

 

サイズを変更したり、移動したりしました。

実際の座標を取得してみます。

インデザインをコントロールする中で、実際の座標を取得する機会は多いでしょう。 

NAVI_VBA_3_03009.JPG   NAVI_VBA_3_03010.JPG

 

実際の座標と比べて見てください。

 NAVI_VBA_3_03008_1.png

 

 テキストデータを上書き/後ろに追加

NAVI_VBA_3_03011.JPG NAVI_VBA_3_03013.JPG

NAVI_VBA_3_03014.JPG

 上書きは、単純に

Contents = filde_jyusyo1 

後ろに追加する場合は、フレームのポジションを指定して流し込む (-1)は最後の文字位置を示す。

試しに(-1)の部分を ー を付けない数字で実行して見てください。

.InsertionPoints.Item(-1).Contents = filde_jyusyo2

 

MsgBox "住所データを上書きします"

filde_jyusyo1 = "東京都品川区中延6-1-29"
myTextFrame.Contents = filde_jyusyo1    'テキストフレームに住所データを書き込む

MsgBox "住所データを後ろに追加して書き込む"

 'フレームにデータを追加して書き込む
filde_jyusyo2 = vbCr & "電 話03ー3785ー4402"
myTextFrame.ParentStory.InsertionPoints.Item(-1).Contents = filde_jyusyo2

 テキストフレームの回転

NAVI_VBA_3_03015.JPG

 


'テキストフレームを回転させる。Vertical
myTextFrame.RotationAngle = 90

テキストフレームを90度、回転しました。

NAVI_VBA_3_03016.JPG

 

テキストフレームの拡大/縮小

テキストフレームを縦横それぞれ50%、200%拡大縮小を行っています。
テキストフレームに含まれる、文字も同時に拡大縮小います。


'テキストフレームを拡大/縮小させる。
myTextFrame.HorizontalScale = 50

'テキストフレーム拡大/縮小させる。
myTextFrame.VerticalScale = 200

 NAVI_VBA_3_03020.JPG

 

テキストフレームを傾ける

テキストフレームを30度傾けました。


'テキストフレームを傾ける
myTextFrame.ShearAngle = 30

NAVI_VBA_3_03022.JPG

 

 実行とともに、インデザインの状態も確認しながら、スクリプトの定数も変えて実行して見てください。

 


 

 <スクリプト全体>コピーして使用してもOKです。


Option Explicit

Private Sub CommandButton1_Click()

Dim myInDesign, myDocument, myTextFrame
Dim haichi_1_YS, haichi_1_XS, haichi_1_YE, haichi_1_XE
Dim filde_jyusyo1, filde_jyusyo2, filde_jyusyo3, filde_jyusyo4
Dim Me_size_GH, Me_size_GY
Dim dir_mei, INDD_name
Dim mov_XS, mov_YS
Dim FrameZahyo
Rem この行は、コメント行です。 先頭に Rem を記入してコメント行とします。
' 'は、この後ろの記述がコメントとなります。 行の記述途中から後ろをコメントとします。
Rem 次の行は、インデザインを起動します。
Set myInDesign = CreateObject("InDesign.Application.CS4_J") 'インデザインを起動する

MsgBox "ドキュメントを開きます!"
dir_mei = "M:\NAVI_VBA"
INDD_name = dir_mei & "\テストサンプル.indd"
Set myDocument = myInDesign.Open(INDD_name)

MsgBox "テキストフレームを作成"
Rem テキストフレームサイズを設定
Set myTextFrame = myDocument.TextFrames.Add

haichi_1_YS = 70
haichi_1_XS = 20
haichi_1_YE = 120
haichi_1_XE = 100

myTextFrame.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")

MsgBox "文字を書込ます。"

'テキストフレームに文字を書き込む。

filde_jyusyo1 = "岩手県盛岡市山田6-7-8"
myTextFrame.Contents = filde_jyusyo1    'テキストフレームに住所データを書き込む

MsgBox "テキストフレームサイズを変更"


Rem テキストフレームサイズを変更
haichi_1_YS = 100
haichi_1_XS = 20
haichi_1_YE = 150
haichi_1_XE = 180

myTextFrame.GeometricBounds = Array(CStr(haichi_1_YS) + "mm", CStr(haichi_1_XS) + "mm", CStr(haichi_1_YE) + "mm", CStr(haichi_1_XE) + "mm")

MsgBox "テキストフレームを移動"
Rem テキストフレームを移動させる。

mov_XS = 40
mov_YS = 150

myTextFrame.Move Array(CStr(mov_XS), CStr(mov_YS))

MsgBox "テキストフレームの座標を取得"

Rem テキストフレームの位置情報を取得する。

FrameZahyo = myTextFrame.GeometricBounds

MsgBox "Y座標スタート " & FrameZahyo(0) & vbCr & "X座標スタート " & FrameZahyo(1) & vbCr & "Y座標エンド " & FrameZahyo(2) & vbCr & "X座標エンド " & FrameZahyo(3)

MsgBox "住所データを上書きします"

filde_jyusyo1 = "東京都品川区中延6-1-29"
myTextFrame.Contents = filde_jyusyo1    'テキストフレームに住所データを書き込む

MsgBox "住所データを後ろに追加して書き込む"

 'フレームにデータを追加して書き込む
filde_jyusyo2 = vbCr & "電 話03ー3785ー4402"
myTextFrame.ParentStory.InsertionPoints.Item(-1).Contents = filde_jyusyo2

 'フレームにデータを追加して書き込む
filde_jyusyo3 = vbCr & "FAX03ー3785ー4401" & vbCr & "E-mail:info@sanei-rint.co.jp"
myTextFrame.ParentStory.InsertionPoints.Item(-1).Contents = filde_jyusyo3

 'フレームにデータを追加して書き込む
filde_jyusyo4 = vbCr & "http:www.sanei-print.co.jp"
myTextFrame.InsertionPoints.Item(-1).Contents = filde_jyusyo4 'フレームにデータを追加して書き込むNG

'テキストフレームを回転させる。Vertical
MsgBox "テキストフレームを回転させる"
myTextFrame.RotationAngle = 90

'テキストフレームを拡大/縮小させる。
MsgBox "テキストフレームを拡大/縮小させる"
myTextFrame.HorizontalScale = 50

'テキストフレーム拡大/縮小させる。
MsgBox "テキストフレーム拡大/縮小させる"
myTextFrame.VerticalScale = 200

'テキストフレームを傾ける
MsgBox "テキストフレームを傾ける"
myTextFrame.ShearAngle = 30


End Sub
    

 

 

 

関連記事