TOP > blog > Adobe InDesign vbs スクリプトによる表組操作 no3 (表組調整)
インデザイン
2020/07/17

Adobe InDesign vbs スクリプトによる表組操作 no3 (表組調整)

管理者用
blog

InDesign スクリプト 表組の 3回目 です。

今回は、フォントサイズや文字間など、表組の文字に対する設定を主に紹介します。

スクリプトをダウンロード出来るようにZipファイルでアップしてます。

サンプル Excelファイル ⇒ ダウンロードはこちらから

下記、本文内には、インデザインの立ち上げ部分のスクリプトは、割愛しております。 

 

 サンプルスクリプトの実行例を次の動画にしてますので参照してください。

  

 

1.フォントの設定

使用するフォントやフォントサイズの設定です。


'フォント
MsgBox "No.H02 " & vbCr & vbCr & "フィンとサイズの設定を行います。"

Table_RowsCount = myTable2.Rows.Count
Table_ColumsCount = myTable2.Columns.Count
Table_CellsCount = myTable2.Cells.Count

For k = 1 To Table_CellsCount Step 1
    myTable2.Cells.Item(k).Texts.Item(1).AppliedFont = "MS ゴシック"
    myTable2.Cells.Item(k).Texts.Item(1).FontStyle = "Regular"
    myTable2.Cells.Item(k).Texts.Item(1).PointSize = 20
Next

MsgBox "No.H02-2 " & vbCr & vbCr & "次に1文字だけフィンとサイズを変えます。"
myTable2.Rows.Item(3).Cells.Item(2).Characters.Item(4).PointSize = 40

MsgBox "No.H02-3 " & vbCr & vbCr & "もとに戻します"
myTable2.Rows.Item(3).Cells.Item(2).Characters.Item(4).PointSize = 20

2.段落揃え

段落の揃え方向の設定です。
揃え方向に対し、定数は以下の通りです。

センター揃え  1667591796 
右揃え     1919379572 
下両端揃え   1718971500 
下左揃え    1818584692 


'12-2.段落配置 揃え

MsgBox "No.H03 " & vbCr & vbCr & "段落の揃え方向の設定 1行目センター揃え"

For j = 1 To Table_ColumsCount Step 1
    myTable2.Rows.Item(1).Cells.Item(j).Texts.Item(1).Justification = 1667591796 'idJustification.idCenterAlign
Next

MsgBox "No.H04 " & vbCr & vbCr & "段落の揃え方向の設定 三列目の2行目以下右揃え"

For j = 2 To Table_RowsCount Step 1
    myTable2.Columns.Item(3).Cells.Item(j).Texts.Item(1).Justification = 1919379572   'idJustification.idRightAlign
Next

MsgBox "No.H05 " & vbCr & vbCr & "段落の揃え方向の設定 2列目の2行目以下両端揃え"
For j = 2 To Table_RowsCount Step 1
    myTable2.Columns.Item(2).Cells.Item(j).Texts.Item(1).Justification = 1718971500   'iidJustification.dFullyJustified
Next

MsgBox "No.H06 " & vbCr & vbCr & "段落の揃え方向の設定 2列目の2行目以下左揃え"
For j = 2 To Table_RowsCount Step 1
    myTable2.Columns.Item(1).Cells.Item(j).Texts.Item(1).Justification = 1818584692  'idJustification.idLeftAlign
Next

3.余白

表内の文字組に対し、上下左右のマージンの設定です。

Rem 余白
MsgBox "No.H07-1 " & vbCr & vbCr & "余白の設定 下側に 4mm"
myTable2.TextBottomInset = 4

MsgBox "No.H07-2 " & vbCr & vbCr & "余白の設定 左側に 4mm"
myTable2.TextLeftInset = 4

MsgBox "No.H07-3 " & vbCr & vbCr & "余白の設定 右側に 4mm"
myTable2.TextRightInset = 4

MsgBox "No.H07-4 " & vbCr & vbCr & "余白の設定 上側に 4mm"
myTable2.TextTopInset = 4

MsgBox "No.H08-1 " & vbCr & vbCr & "余白の設定 2列目 下に6mm"
myTable2.Columns.Item(2).TextBottomInset = 6

MsgBox "No.H08-2 " & vbCr & vbCr & "余白の設定 2列目 左に6mm"
myTable2.Columns.Item(2).TextLeftInset = 6

MsgBox "No.H08-3 " & vbCr & vbCr & "余白の設定 2列目 右に6mm"
myTable2.Columns.Item(2).TextRightInset = 6

MsgBox "No.H08-4 " & vbCr & vbCr & "余白の設定 2列目 上に6mm"
myTable2.Columns.Item(2).TextTopInset = 6

4.行配置、縦方向の揃え

表のセル内の縦方向の揃えの設定です。

上付き/下付き、中心に配置、上下の両端などの設定が可能です。


MsgBox "No.H09 " & vbCr & vbCr & "縦方向の揃えの設定を見やすく 行の高さ調整"
myHeight = "200mm"
myTable2.Height = myHeight

'行配置 揃え縦方向
MsgBox "No.H09-1 " & vbCr & vbCr & "縦方向の揃えの設定 1列目 下揃え"
myTable2.Columns.Item(1).VerticalJustification = 1651471469 ' idVerticalJustification.idBottomAlign '1651471469

MsgBox "No.H09-2 " & vbCr & vbCr & "縦方向の揃えの設定 3列目 中心"
myTable2.Columns.Item(3).VerticalJustification = 1667591796 'idVerticalJustification.idCenterAlign  '1667591796

MsgBox "No.H09-3 " & vbCr & vbCr & "縦方向の揃えの設定 3行目 上"
myTable2.Rows.Item(3).VerticalJustification = 1953460256 'idVerticalJustification.idTopAlign  '1953460256

MsgBox "No.H06-5 " & vbCr & vbCr & "縦方向の揃えの設定 4行目 上下両端"
myTable2.Rows.Item(4).VerticalJustification = 1785951334 'idVerticalJustification.idJustifyAlign  '1785951334

5. 長体・平体

文字を上下/左右に広げたり、細くしたりして、字形を長体または、平体にします。

'13-1.長体/平体
MsgBox "No.H10 " & vbCr & vbCr & "文字の長体平体 幅を太く"
myTable2.Rows.Item(3).Cells.Item(2).Texts.Item(1).HorizontalScale = 150

MsgBox "No.H10-2 " & vbCr & vbCr & "文字の長体平体 幅を細く"
myTable2.Rows.Item(4).Cells.Item(2).Texts.Item(1).HorizontalScale = 50

MsgBox "No.H10-3 " & vbCr & vbCr & "文字の長体平体 上下を細く"
myTable2.Rows.Item(2).Cells.Item(2).Texts.Item(1).VerticalScale = 50

MsgBox "No.H10-4 " & vbCr & vbCr & "文字の長体平体 上下を太く"
myTable2.Rows.Item(5).Cells.Item(2).Texts.Item(1).VerticalScale = 200

6.文字間の設定

文字間に絡む設定には、トラッキング、カーニング、字ツメ、などが上げられる。

(1)トラッキング


MsgBox "No.H11 " & vbCr & vbCr & "文字のトラッキング"
myTable2.Rows.Item(2).Cells.Item(1).Texts.Item(1).Tracking = 400

(2)カーニング


MsgBox "No.H12 " & vbCr & vbCr & "文字のカーニング"
myTable2.Rows.Item(3).Cells.Item(1).Texts.Item(1).KerningValue = 600

(3)字ツメ


MsgBox "No.H13 " & vbCr & vbCr & "文字の文字ツメ"
myTable2.Rows.Item(4).Cells.Item(1).Texts.Item(1).Tsume = 0.5

7. 文字間モード

文字間の体裁に大きく影響する文字間モードには、和文、オプティカル、メトリクス の3モードがある。


MsgBox "No.H14-1 " & vbCr & vbCr & "文字間モード"
myTable2.Rows.Item(3).Cells.Item(2).Texts.Item(1).KerningMethod = "オプティカル"

MsgBox "No.H14-2 " & vbCr & vbCr & "文字間モード"
myTable2.Rows.Item(3).Cells.Item(3).Texts.Item(1).KerningMethod = "和文等幅"

MsgBox "No.H14-3 " & vbCr & vbCr & "文字間モード"
myTable2.Rows.Item(4).Cells.Item(2).Texts.Item(1).KerningMethod = "メトリクス"

8.ベースライン

ベースラインの設定


MsgBox "No.H15 " & vbCr & vbCr & "文字のベースライン"
myTable2.Rows.Item(2).Cells.Item(3).Characters(2).BaselineShift = "5pt"

9.行間

行間の設定を行っても、1行では見えないため、文字列を2行にしてから、設定してます。


MsgBox "No.H16 " & vbCr & vbCr & "文字の行間調整 2行にデータ挿入"
myTable2.Rows.Item(1).Cells.Item(1).InsertionPoints.Item(1).Contents = "部課署" & vbCr
myTable2.Rows.Item(3).Cells.Item(1).InsertionPoints.Item(-1).Contents = vbCr & "工場長"

MsgBox "No.H16-1 " & vbCr & vbCr & "文字の行間"
myTable2.Rows.Item(1).Cells.Item(1).Texts.Item(1).Leading = 20

MsgBox "No.H16-2 " & vbCr & vbCr & "文字の行間"
myTable2.Rows.Item(3).Cells.Item(1).Texts.Item(1).Leading = 20

10.縦書き/横書き

表のセル内の配置においても、縦書き/横書きの設定が可能です。


MsgBox "No.H17 " & vbCr & vbCr & "縦書き/横書き"
'縦書き横書き指定
myTable2.Columns.Item(2).writingDirection = 1986359924 ' idHorizontalOrVertical.idVertical '1986359924

MsgBox "No.H17 " & vbCr & vbCr & "縦書き/横書き"
myTable2.Rows.Item(1).writingDirection = 1752134266 ' idHorizontalOrVertical.idHorizontal '1752134266
myTable2.Rows.Item(-1).writingDirection = 1752134266 ' idHorizontalOrVertical.idHorizontal '1752134266

11.ヘッダー/フッダー

表のヘッダー/フッダーの設定を行っておくと、オーバーフローした時に、便利です。
スクリプトは、今までの表組を一旦、デリートしてから、新たな表を作成して、この表を使って、ヘッダー/フッダーの設定を行っている。
また、ヘッダー/フッダーの設定後、表に1行追加して、テキストフレームをオーバフローさせている。
そして、ページを追加して、新たにテキストフレームを作成して、オーバフローしたテキストフレームと連結を行っている。

(1)テスト用デーブルの作成

MsgBox "No.18" & vbCr & vbCr & "ヘッダー/フッターの設定の動作確認用テーブルを作成します。"
myTextFrame.Delete

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

Rem テキストフレームサイズを変更
YS = 25
XS = 25
YE = 225
XE = 185
myTextFrame.GeometricBounds = Array(CStr(YS) + "mm", CStr(XS) + "mm", CStr(YE) + "mm", CStr(XE) + "mm")

'MsgBox "テーブル変換 TAB/CR データ "

tableDT = vbCr & vbCr & "三栄スタッフ一覧" & vbCr
tableDT = tableDT & "役職/担当" & vbTab & "名 前" & vbTab & "年齢" & vbCr
tableDT = tableDT & "事業部長" & vbTab & "宮本 武蔵" & vbTab & "63" & vbCr
tableDT = tableDT & "工場長" & vbTab & "坂本 竜馬" & vbTab & "33" & vbCr
tableDT = tableDT & "品質管理課長" & vbTab & "佐々木 小次郎" & vbTab & "45" & vbCr
tableDT = tableDT & " " & vbTab & "平均年齢" & vbTab & "47" & vbCr

myTextFrame.InsertionPoints.Item(-1).Contents = tableDT

'MsgBox "TAB テーブルに変換"
Set myStartCharacter = myTextFrame.Paragraphs.Item(4).Characters.Item(1)
Set myEndCharacter = myTextFrame.Paragraphs.Item(8).Characters.Item(-2)
Set myTableText = myTextFrame.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1)
Set myTable2 = myTableText.ConvertToTable

myWidth = "180mm"
myHeight = "180mm"
myTable2.Width = myWidth
myTable2.Height = myHeight
myTable2.Columns.Item(3).Width = "30mm"

Table_RowsCount = myTable2.Rows.Count
Table_ColumsCount = myTable2.Columns.Count
Table_CellsCount = myTable2.Cells.Count

For k = 1 To Table_CellsCount Step 1
    myTable2.Cells.Item(k).Texts.Item(1).AppliedFont = "MS ゴシック"
    myTable2.Cells.Item(k).Texts.Item(1).FontStyle = "Regular"
    myTable2.Cells.Item(k).Texts.Item(1).PointSize = 20
Next

(2)ヘッダー/フッターの設定

表のセル内の配置においても、縦書き/横書きの設定が可能です。


MsgBox "No.H18-1 " & vbCr & vbCr & "行タイプ ヘッダー/フッダーの設定"

'行 タイプ
'myTable.Rows.Item(1).RowType = 1161982583 'idRowTypes.idBodyRow  本文行
MsgBox "No.H18-2 " & vbCr & vbCr & "ヘッダーの設定"
myTable2.Rows.Item(1).RowType = 1162375799 'idRowTypes.idHeaderRow  ヘッダ行

MsgBox "No.H18-3 " & vbCr & vbCr & "フッダーの設定"
myTable2.Rows.Item(-1).RowType = 1162244727   'idRowTypes.idFooterRow フッタ行

'myTable.Rows.Item(1).RowType = 1162703479 'idRowTypes.idMixedState 混合

MsgBox "表に ヘッダー/フッダー を設定しました。"

MsgBox "No.H19 " & vbCr & vbCr & "本文行に1行追加"

myTable2.Rows.Item(-2).Rows.Add
myTable2.Rows.Item(-2).Cells.Item(1).Contents = "取締役"
myTable2.Rows.Item(-2).Cells.Item(2).Contents = "勝 海舟"
myTable2.Rows.Item(-2).Cells.Item(3).Contents = "86"

myTable2.Rows.Item(-1).Cells.Item(3).Contents = "57"

MsgBox "No.H20 " & vbCr & vbCr & "テキストフレームのオーバーフローしてます。" & vbCr & "ページを増やしテキストフレームを作成"

表のセル内の配置においても、縦書き/横書きの設定が可能です。


myDocument.Pages.Add
Set myTextFrame2 = myDocument.Pages.Item(2).TextFrames.Add
myTextFrame2.GeometricBounds = Array(CStr(YS) + "mm", CStr(XS) + "mm", CStr(YE) + "mm", CStr(XE) + "mm")

MsgBox "No.H21 " & vbCr & vbCr & "2ページ目に連結"
myTextFrame.NextTextFrame = myTextFrame2
myTextFrame = myTextFrame2

MsgBox "No.H21-2 " & vbCr & vbCr & "5行目のフッターの文字フォントサイズ変更"
myTable2.Rows.Item(-1).Cells.Item(2).Texts.Item(1).PointSize = 10

MsgBox "No.H22-1 " & vbCr & vbCr & "本文行に1行追加"

myTable2.Rows.Item(-2).Rows.Add
'myTable2.Rows.Item(-1).Height = "5mm"
myTable2.Rows.Item(-2).Cells.Item(1).Contents = "大阪支店長"
myTable2.Rows.Item(-2).Cells.Item(2).Contents = "土方 歳三"
myTable2.Rows.Item(-2).Cells.Item(3).Contents = "38"

myTable2.Rows.Item(-1).Cells.Item(3).Contents = "53"

関連記事