TOP > blog > 10.インデザインスクリプト 初級講座(6) インデント/アウトライン/削除
インデザインスクリプト
2016/01/27

10.インデザインスクリプト 初級講座(6) インデント/アウトライン/削除

管理者用
blog

テキストフレーム内のインデントの設定と、ベースライン、アウトラインの設定方法及び、削除方法です。

今までは、テキストフレームに対しての設定がメインでしたが、行や文字位置を指定して操作する方法が含まれています。

色々な場面で、使う事が多いと思われます。

ボタンのクリックイベントに、ページの最後に記述している スクリプト全体を記入してください。コピーしても問題ありません。

ボタンのクリックで、スクリプトがスターとします。

 NAVI_VBA_06_001.JPG

 指定した、インデザインドキメントだ開き、 テキストフレームが作られて、操作対象となる文字が流し込まれています。

 

インデントの設定

 NAVI_VBA_06_002.JPG

 


MsgBox "インデントの指定"

'インデントの指定

myTextFrame.Paragraphs.Item(2).FirstLineIndent = "10mm"

2行目にインデントが設定されました。

NAVI_VBA_06_003-1.png

 2行目にカーソルを持って行くと、段落タブのインデントが設定されているのが判ります。

NAVI_VBA_06_020.JPG

myTextFrame.Paragraphs.Item(2).FirstLineIndent = "10mm"
Paragraphs.Item(2) の記述で2行目を指定しています。

今まで、テキストフレームに対して、設定の例で説明してきましたが、
行に対し指定したい場合は、 Paragraphs.Item(2) の記述で操作できます。
他の設定においても、試してみてください。

 ベースラインを設定する

NAVI_VBA_06_005.JPG

 

MsgBox "文字のベースラインを指定する"
'文字のベースラインを指定する

myTextFrame.Characters(2).BaselineShift = "2pt"

myTextFrame.Paragraphs.Item(2).BaselineShift = "4pt"

2文字目の 京 の文字が 2pt上に移動してます。

また、2行目全体が4pt上に移動しました。

Characters(2) は2文字目を表します

Paragraphs.Item(2) は2行目を表します。

NAVI_VBA_06_006-1.png

  削除操作

 段落を削除

 

NAVI_VBA_06_024.JPG

 


MsgBox "段落を削除します。"

'段落の削除
myTextFrame.Paragraphs(2).Delete

 

電話の行が削除されました。

NAVI_VBA_06_021-1.png

文字を削除する

NAVI_VBA_06_025.JPG


MsgBox "文字を削除を削除します。"

'文字の削除
myTextFrame.Characters(2).Delete

 

2文字目の京の文字が削除されました

NAVI_VBA_06_022-1.png

 

段落と文字位置を指定して削除します。

 NAVI_VBA_06_001.png

MsgBox "段落 文字の削除します。"
'段落 文字の削除
myTextFrame.Paragraphs(2).Characters(2).Delete

 2行目の2文字目のAが削除されました。

NAVI_VBA_06_023-1.png

 アウトラインを作成する。

  NAVI_VBA_06_014.JPG

MsgBox "文字のアウトラインを作成する"

'文字のアウトラインを作成する
'myTextFrame.CreateOutlines (False) '元データを残す

myTextFrame.Characters(2).CreateOutlines (True)

 

(False) は、元のデータを残して、アウトラインをとったものが上に配置されます。

 ここでは、 (True) を指定して、元のデータにアウトライン化を実行します。

 2文字目をアウトラインがかかってます。

 NAVI_VBA_06_015-1.png

 

段落のアウトライン

NAVI_VBA_06_016.JPG

 

MsgBox "二行目のアウトラインを作成する"

myTextFrame.Paragraphs.Item(2).CreateOutlines (True)

2行目がアウトライン

NAVI_VBA_06_016-1.png

フレームのアウトライン

NAVI_VBA_06_018.JPG

 

MsgBox "フレーム アウトラインを作成する"

myTextFrame.CreateOutlines (True)

 

フレーム内すべてをアウトライン化

NAVI_VBA_06_017-1.png

 


 

スクリプト全体

 

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
Dim myTabStop1, myTabStop2
Rem この行は、コメント行です。 先頭に Rem を記入してコメント行とします。
' 'は、この後ろの記述がコメントとなります。 行の記述途中から後ろをコメントとします。
Rem 次の行は、インデザインを起動します。
'Set myInDesign = CreateObject("InDesign.Application.CS4_J") 'インデザインを起動する
Set myInDesign = CreateObject("InDesign.Application.CC_J") 'インデザインを起動する

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


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

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")

filde_jyusyo1 = "東京都品川区中延6-1-29"
filde_jyusyo1 = filde_jyusyo1 & vbCr & "電 話03ー3785ー4402"
filde_jyusyo1 = filde_jyusyo1 & vbCr & "FAX03ー3785ー4401"
filde_jyusyo1 = filde_jyusyo1 & vbCr & "E-mail:info@sanei-rint.co.jp"
filde_jyusyo1 = filde_jyusyo1 & vbCr & "http:www.sanei-print.co.jp"

myTextFrame.Contents = filde_jyusyo1    'テキストフレームに住所データを書き込む


MsgBox "インデントの指定"

'インデントの指定

myTextFrame.Paragraphs.Item(2).FirstLineIndent = "10mm"


MsgBox "文字のベースラインを指定する"
'文字のベースラインを指定する

myTextFrame.Characters(2).BaselineShift = "2pt"

myTextFrame.Paragraphs.Item(2).BaselineShift = "4pt"

MsgBox "段落指定で削除。"

'段落の削除
myTextFrame.Paragraphs(2).Delete

MsgBox "文字位置指定で削除"

'文字の削除
myTextFrame.Characters(2).Delete

MsgBox "段落/文字位置指定で削除"
'段落 文字の削除
myTextFrame.Paragraphs(2).Characters(2).Delete

MsgBox "文字のアウトラインを作成する"

'文字のアウトラインを作成する
'myTextFrame.CreateOutlines (False) '元データを残す
myTextFrame.Characters(2).CreateOutlines (True)
MsgBox "二行目のアウトラインを作成する"
myTextFrame.Paragraphs.Item(2).CreateOutlines (True)
MsgBox "フレーム アウトラインを作成する"
myTextFrame.CreateOutlines (True)

End Sub

 

 

 


 

 

 

関連記事