インデザイン テーブルの溢れ処理
管理者用
エクセルの表をインデザインに取り込む方法を前回紹介しました。
単純にコピペで出来ますと言うものでした。
今回は、その続きとして、セルに入り切れない(溢れ)場合にどうするについてお話しします。
まず、インデザインの表の設定を見て見ます。
セルの高さの指定が、「最小限度」/「指定値を使用」のどちらになっているか確認します。
セルを溢れた時の動作が違ってきます。
「最小値限度」 に指定している場合、セルに入りきれない時には、自動的に行の高さを広げてくれます。
そして、折り返し2行で表示します。
また、「指定値を使用」 に設定している場合には、セルの右下に 赤●マークを表示して溢れている事を知らせてます。
「最小値限度」の行の高さ拡張するモードの場合は、問題ありません。
しかし、「指定値を使用」の高さ固定の赤●の場合は、何かしらの操作が必要です。
文字フォントサイズを下げる・文字の幅を細く、また文字間を詰める等の方法が考えれれます。
次の図の例では、「ケンタッキーと食肉卸向け」のセルに赤●が消えるまで、長体をかけて、溢れを解消してます。
まだ、赤●は多数あります。
手作業で行うのは、大変な作業です。
ここで登場するのがスクリプトです。
ネット上を見てもこの問題に対する関心は高いようで、対策スクリプトも紹介されてます。
私も、vbsで作って見ました。
最後に、スクリプトファイルを紹介してますので、参照してください。
実際に使ったもので、テーブル以外にもテキストフレームが配置されているドキメントでした。
5番目のテキストフレームにテーブルが配置されていたため
Set myTextFrame = myDocument.TextFrames(5)'----①
の記述としてます。
インデザインで表を表示した状態で、vbsを実行します。
紹介した、スクリプトでは、1列、3列、5列に対し、溢れていたら、文字幅を細くします。
また、1列に対しては、〃 処理を入れてます
更に、5列、6列は電話、FAXの記述列でしたが、ハイフォンの文字フォントを変えてる処理も入れてます。
VBスクリプトサンプルコードを記載しました。
本スクリプトは、実際の仕事の中で使ったものです。
したがって、対象のセル列の指定など、変更して使用してください。
===============================
Private Sub CommandButton1_Click()
Set myInDesign = CreateObject("InDesign.Application") 'インデザインを起動する
MsgBox "開いておく事"
Set myDocument = myInDesign.ActiveDocument
Set myTextFrame = myDocument.TextFrames(5) '----①
Set myTable = myTextFrame.Tables(1)
RowCunt = myTable.Rows.Count
'MsgBox "Cells " & myTable.Cells.Count
'MsgBox "Rows " & myTable.Columns.Count
YakusyokuA = ""
YakusyokuB = ""
YakusyokuOut = ""
For roopA = 1 To RowCunt - 1 Step 1
' ・・・・〃処理 前列と同じ内容の場合「 〃 」
YakusyokuA = myTable.Rows.Item(roopA + 1).Cells.Item(1).Contents
If YakusyokuA = YakusyokuB Then
YakusyokuOut = "〃"
Else
YakusyokuB = YakusyokuA
YakusyokuOut = YakusyokuA
End If
myTable.Rows.Item(roopA + 1).Cells.Item(1).Contents = YakusyokuOut
'・・・・・・・・
aa = cyhotai(myTable, roopA + 1, 3) '3列に溢れ処理長体
aa = cyhotai(myTable, roopA + 1, 5) '5列にに溢れ処理長体
bb = HaiPhonA(myTable, roopA + 1, 5) '5列 ハイフォン書体変更
bb = HaiPhonA(myTable, roopA + 1, 6) '6列 ハイフォン書体変更
bb = HaiPhonA(myTable, roopA + 1, 7) '7列 ハイフォン書体変更
Next 'roopA
MsgBox "終了しました"
End Sub
'*************************************************************************************
'*********** 溢れ 長体処理 ************************************************************
Function chyotai(myTable, cuntB, celA)
moji_Hscale = 100
Font_OVF = 0
If myTable.Rows.Item(cuntB).Cells.Item(celA).Overflows Then
Font_OVF = 1
moji_Hscale = 100
Do While Font_OVF = 1
If myTable.Rows.Item(cuntB).Cells.Item(celA).Overflows Then
moji_Hscale = moji_Hscale - 1
myTable.Rows.Item(cuntB).Cells.Item(celA).Texts.Item(1).HorizontalScale = moji_Hscale
'.VerticalScale = moji_Hscale
Else
Font_OVF = 0
End If
Loop
End If
cyhotai = moji_Hscale
End Function
'**************ハイフォンフォントの変更 **************************************************
Function HaiPhonA(myTable, Excel_linCunt, celA)
fafonDat = myTable.Rows.Item(Excel_linCunt).Cells.Item(celA).Contents
n = 1
RoopFaifun = 0
Do While RoopFaifun = 0
sp = InStr(n, fafonDat, "-", 1)
If sp = 0 Then
RoopFaifun = 1
HaiPhonA = 0
Else
myTable.Rows.Item(Excel_linCunt).Cells.Item(celA).Characters.Item(sp).AppliedFont = "MS ゴシック"
myTable.Rows.Item(Excel_linCunt).Cells.Item(celA).Characters.Item(sp).FontStyle = "Regular"
n = sp + 1
HaiPhonA = 1
End If
Loop
aa = cyotai(myTable, Excel_linCunt, celA)
End Function
'**************************************************************************************