戻る


Excel to Illustrator
【名  称】 to-Illust.xls
【動作確認】 Windows Microsoft Excel 2000 / Mac Microsoft Excel 98
【制作者名】 あぷらいと(upright.arai@nifty.com)

 Excel で作成した表組を Illustrator で使いたいということがときどきありますが、
その変換がなかなかうまくいかないことが多いようです。
また上手くいったとしても罫線が塗りの四角になり、
せっかくの罫線も太さの変更などで、結局罫線の引き直しということも多々あります。

それならばということで、直接 Excel から情報を収集し、
Illustrator のデータとして書き出すマクロを作成してみました。

 

【使い方】
1. このファイル(to-illust**.xls)を開いておきます。
2. イラストレータに変換したいデータの入ったファイル(仮りに)「aaaa.xls」を開きます。
3. イラストレータに変換したいデータのデータ部分の「範囲」を選択する。
4. [マクロ(M) Alt+F8]をより、マクロ名 ['to-illust**.xls'!makeAI] を選んで実行。
5. 「表組サイズ指定」のダイアログが現れます。選択された範囲のデータのWidth(幅)とHeight(高さ)の数値が「pt」と「(mm)」で表示され、その下の「Width」「Height」のテキストボックスには欲しいサイズを「mm」単位で入力してください。
6. 「cellSP」にはセル端から文字までのスペース(mm単位)を入力してください。
デフォルトは「0」ミリです。
7. Illustrator CS にチェックを入れれば「Illustrator CS」用に合わせたデータを書き出します。
8. 「縦組」のチェックボックスをチェックすれば、文字だけを反時計回りに90度回転してAIファイルを作成するようになります。
セルはそのままで文字だけ「横組」→「縦組」「縦組」→「横組」となります。
作成されたAIデータ全体を、時計回り90度回転させてください。
9. [OK]ボタンをクリックすると「フォントの倍率」のダイアログが現れます。
サイズ指定された「Width」と「Height」の倍率の数値の小さい方がデフォルトの倍率となっています。
用途に合わせて数値を入力し直してください。
10. [OK]ボタンをクリックで、画面がチラチラしたのちに「aaaa.xls」ファイルと同じ場所に「aaaa.ai」ファイルが作成されます。
 
【注意事項】
1. 変換できるのはセルと文字のみです。
2. フォントは「MS Pゴシック」、「MS ゴシック」、「MS 明朝」、「MS P明朝」のみを使います。それ以外のフォントはすべて「MS Pゴシック」に置き換えられます。
3. セルの罫線に関係なく全て「0.4 pt」の線の四角形になります。塗りはなし。
4. セルの書式設定の「配置」で「折り返して全体を表示する」「縮小して全体を表示する」にチェックが入っている場合は、変換されたセル(長方形)のエリアをテキストボックスとし、その中に文字列が挿入されます。
5. セルの書式設定の「配置」で「折り返して全体を表示する」「縮小して全体を表示する」にチェックが入っていない場合、なおかつ、「文字位置」で「両端揃え」「均等割り付け」が選択されている場合、セルの行の中心にテキストボックスが作成されて、その中に文字列が挿入されます。
6. 横組は「文字の配置」の「縦位置」は全て中央に変換。
縦組は「文字の配置」の「横位置」は全て中央に変換。
7. このマクロでは、イラストレータに変換したいデータ「エクセルデータ」と同じ場所に
「イラストレータデータ」を出力するので、必ず書き込みの出来る場所で実行すること。書き込み禁止の FD 、MO とか CD-R 上では実行しないこと。
8. 作成されたデータはイラストレータバージョンの8、9、10、CS で読み込めることは、一応確認しました。
9. マクロは Excel 2000 と Excel 2003 で動作確認しました。
(Mac版 Excel 98 で一応確認)
10. 「表組サイズ指定」のダイアログで「cellSP」の数値を大きく取りすぎるとセル範囲に入りきれなくなり文字列がくずれます。
「cellSP」を「0」にして、Illustrator で段落設定のインデント(右)・(左)でアキスペースを確保する方法もあります。


このファイル名は自分の使いやすいファイル名に変更して使用しても大丈夫です。 

 to-Illustxls.zipダウンロード (2006/12/23 to-illst54.xls) 

バグなどお気づきの点がありましたら、ぜひお知らせください。
あぷらいと情報交換のページ  aiデータ解析のページ


更新履歴
【特定の書式のセルでエラーとなる】(2006/12/23 to-illst54.xls)
書式フォーマット中の「"」の扱いの処理を間違えていたため、特定の書式が使われているとエラーとなっていました。
【表示しないセル】(2006/06/09 to-illst53.xls)
「列」あるいは「行」が「表示しない」(列幅=0 or 行高さ=0)となっているセルの文字データを書き出さないように変更しました。
【結合セルでの不具合その2】(2006/06/05 to-illst52.xls)
to-illust51での修正で不具合がありました。

1列目の1行目に結合セルがあると
列を挿入する場合に結合セル列分の列が挿入されてしまいます。
1列目の1行目を選択して、列を挿入していたのが問題でした。
1列目で結合セルでない行までシフトさせてから選択し、列を挿入するようにしました。
【結合セルでの不具合】(2006/06/03 to-illst51.xls)
Excelデータで結合したセル行高さ、列幅の異なるセルが含まれている場合、マクロがエラーとなってしまう不具合を修正しました。
【作業経過を非表示にして速度をアップ】(2006/05/16 to-illst50.xls)
変換作業を非表示にして処理時間が短くなりました。
【セルにエラーがあるマクロが止まる】
セルで「0で除算」などのエラーがあるとマクロが止まっていましたが、「#ERR!」を出力して作業が止まらないようにしました。
【Mac用にフォントOsakaを選択可能に】
Mac用に全てのフォントを「Osaka」にするチェックボックスを付けました。
MacのExcelで起動した場合のみデフォルトでチェックがつきます。
【Illustrator CS以降では「OK」では開かないで】
Illustrator CD以降でto-illustで書きだしたデータは直接開く場合は必ず「更新」で開いて下さい。
IllustratorCS以降で「OK」で開いた場合文字列が表示されていませんでしたが、表示するように修正しました。しかし、必ず「更新」で開いて下さい。
書き出したデータは最低限のデータのみですので「OK」ボタンで開くと崩れます。
バージョン10以前で保存し直した場合は大丈夫です。
【テキストボックスの選択】(2005/05/22 to-illst47.xls)
書式設定−配置の「折り返して全体を表示する」「縮小して全体を表示する」「均等割り付け」をテキストボックスにするかどうか、選択できるように変更しました。
【文字だけを反時計回りに90度回転】(2005/05/21 to-illst45.xls)
to-Illust.xls にオプションを追加しました。
「縦組」のチェックボックスをチェックすれば、
文字だけを反時計回りに90度回転してAIファイルを作成するようになります。
つまり、セルはそのままで文字だけ「横組」→「縦組」、「縦組」→「横組」となります。
作成されたAIデータ全体を、時計回り90度回転させてください。
【IllustratorでShiftJISコード「5C(\)」が含まれる文字の置き換え】
(2005/04/19 to-illst44.xls)
IllustratorでShiftJISコード「5C」が含まれる文字が直接書き込まれているとエラーになるため、エクセルの置き換え機能を使っていました。
\―ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx\
セル内の文字数が多い場合に「メモリー不足」でマクロが中止してしまうケースがあるため、置き換えはマクロ(VBA)で実行するように変更しました。
【作業ファイルの書き出しを中止】
セルの書式設定の表示形式をそのまま取得して、Illustratorデータとして書き出すと「文字列以外」は表示形式を持たない数値になってしまうため、一度「テキストファイル」で書き出して、それを文字列として読み込んでいました。それでも日付など年と月日が逆になるケースがありました。
ところが、エクセルの「TEXT関数」を使うことで表示形式の文字列に変換できることがわかったため、「作業ファイル」の書き出しを中止しました。
これにより、テキストに書き出すときのセル内の文字数制限255文字がなくなりました。
【「サイズの指定」と「セル内のスペースの指定」】(2004/12/7 to-illst40.xls)
書き出しデータの「サイズの指定」と「セル内のスペースの指定」ができるように変更。

「表組サイズ指定」では、選択された範囲のデータのWidth(幅)とHeight(高さ)の数値が「pt」と「(mm)」で表示されます。

「Width」「Height」のテキストボックスには欲しいサイズを「mm」単位で入力してください。

「cellSP」にはセル端から文字までのスペース「mm」単位で入力してください。
デフォルトは「0」ミリです。
「cellSP」の数値を大きく取りすぎるとセル範囲に入りきれなくなり、文字組がくずれます。
「cellSP」を「0」にして、Illustrator で「段落設定」の「インデント(右)」、「インデント(左)」でスペースを確保する方法もあります。

「Illustrator CS」のチェックを入れれば、「Illustrator CS」用に合わせたデータを書き出します。

「フォントの倍率」では、サイズ指定された「Width」と「Height」の倍率の数値の小さい方がデフォルトの倍率となっています。フォントサイズの設定ではなく、エクセルでのフォントサイズの拡大縮小の比率です。用途に合わせて数値を入力し直してください。
【文字列以外の表示形式】(2004/12/4 to-illst36.xls)
セルの書式設定で表示形式が「文字列」以外になっていても文字列が入力された場合に「左揃え」になるので、それに合わせるように変更。
(揃えが設定されている場合は揃えが優先)
【タブ区切りテキスト保存(バグ情報)その2】(2004/12/1 to-illst35.xls)
範囲選択セルの外に強制改行 [Alt]+[Enter](Winの場合)があると、作業用に「タブ区切りテキストデータ」に保存した段階で2行に分かれて、AIファイルに書き出す時文字列がずれて出力されることがありました。

【縦組に対応】(2004/11/29 to-illst34.xls)
縦組に対応しました。
縦組は「文字の配置」の「横位置」は全て中央に変換。
(横組は「文字の配置」の「縦位置」は全て中央に変換。)

【テキストボックスの先頭行の上の余白】(2004/11/27 to-illst33.xls)
Illustrator 10 まではテキストボックスを使用すると、行送りの量に比例して先頭行の上に余白ができます。
この量が分からないとテキストボックス内の文字列と普通の文字列の位置を合わせるのは不可能です。
以前に「PS.exe」(電算写植組版フソト『くみ子』からIllustratorに変換)を作成した時に余白量を求める計算式は、いろいろと実験した結果、以下のものを使っていました。
これでほとんど問題はないようでしたので、to-illust.xls でもこの値を使いました。
●余白量の計算式
  横組先頭行余白  (行送り−(サイズ×1.15))×0.75
  縦組先頭行余白  (行送り−サイズ)÷2


Illustrator CS からはテキストボックスの余白を考えなくて組めるようになりました。
以前のバージョンのデータを開いても、(更新で開いた場合)余白の入った先頭行の位置に合わせることができなくなってしまったようです。
更新で開かない場合でも、文字列に変更を加えた途端に「更新」されて位置がずれてしまいます。
【「両端揃え」、「均等割り付け」セルの変換】
セルの書式設定の「配置」で「折り返して全体を表示する」「縮小して全体を表示する」にチェックが入っていない場合で、なおかつ、「文字位置」で「両端揃え」あるいは、「均等割り付け」選択されている場合、セルの行の中心にテキストボックスが作成して、その中に文字列を挿入します。
文字列を1行の扱いとします。
テキストボックスを使用していますので、ボックスのエリアから文字がはみ出しているかもしれません。しっかりと確認してください。

【「折り返して全体を表示する」、「縮小して全体を表示する」セルの変換】
(2004/11/26 to-illst32.xls)
セルの書式設定の「配置」で「折り返して全体を表示する」あるいは、「縮小して全体を表示する」にチェックが入っている場合は、変換されたセル(長方形)のエリア全体をテキストボックスのエリアとし、その中に文字列を挿入します。
エクセルではセルに何行の文字列が入るかを情報で取得することができません(?)。
つまり、実際に文字列を挿入して Illustrator で確認してから調整が必要となります。
文字列を複数行の扱いとします。
テキストボックスを使用していますので、ボックスのエリアから文字がはみ出しているかもしれません。しっかりと確認してください。
【一度も保存していないデータ】
「一度も保存していないデータ」はデータ保護のため、保存してからでないと保存を促すダイアログを出して、実行できないように変更しました。
【エクセルのデータ形式】
変換できるデータはエクセル「xls」形式に固定していましたが、xls 形式だけでなく、txt 、csv 、拡張子なし(Mac?)など、エクセルでオープンできていれば変換できるように修正しました。
【出力ファイルの上書き】
出力される AI ファイルを上書きしないように同名ファイルがある場合、ファイル名にカッコ付き数字を付加するように変更しました。
【Mac Illustrator で直接された出力ファイルをオープン】
Mac Illustrator で直接出力されたファイルを開く場合、システムにインストールされたフォントがなく、エラーとなってしまうため、MS-Gothic、MS-PGothic、MS-Mincho、MS-PMincho を Encoding 部分を出力ファイルに追加しました。
オープン時に「フォントの問題」のダイアログが開きます。構わず[OK]を押してください。
Mac Illustrator ではデフォルトのフォントが代用されて使われます。
【Mac でも動く】(2004/11/25)
マクロの書き換え等を防ぐため、パスワードでのロックをしたため、Mac でマクロが実行出来なくなっていたようです。
パスワードを解除したものをアップしました。
これで Mac でも動くと思います。
エラーが出ても「デバッグ」できますので、メール、情報交換のページに報告していただけると助かります。
【Illustrator CSで出力されたファイルをオープンする】
Illustrator CS で開く場合、「更新」で開かないと文字列が大きくずれます。
開いた後に「更新」を実行しても大丈夫です。
【一つのセルに複数のフォント】
Excelの一つのセルに複数のフォント、複数のサイズが使われていると、セルからフォントとサイズを取得できません。フォントのチェックを忘れていた。最初の1文字の情報をセル全体に適用することにしました。
【列、行幅固定(バグ情報)】
列幅と行高さを固定にするため、取得した数値を再設定するために数値を取得する列、行を1列目、1行目のセルとしていたため、そこに列及び行の結合セルがあるとエラーになる。
【変数の宣言等の整理で勘違い(バグ情報)】
Macでのコンパイルエラーに対処しようとした時、勘違いで、セルの列と行の寸法を整数で取得するようにしてしまったため寸法が短くなっていた。
【タブ区切りテキスト保存(バグ情報)】
セル内の強制改行 [Alt]+[Enter](Winの場合)があると、作業用に「タブ区切りテキストデータ」に保存した段階で2行に分かれて、AIファイルに書き出す時文字列がずれていた。
【タブ区切りテキスト保存(バグ情報)】(2004/11/22)
「日付や小数点表示や桁区切りのカンマ」を取得するため、「タブ区切りテキストデータ」に保存した時に、先頭行および先頭列のセルにデータが一つもない場合、その行及び列が削除されて保存されてしまいます。
そのため、to-illust.xls で変換した場合、テキストの行及び列がずれていました。
【セルの結合に対応】(2004/11/22)
セルの結合に対応していないと、レイアウトが大きくずれてしまうため、対応することにしました。
【一つのセルに複数のサイズ】(2004/11/21)
Excelの一つのセルに複数のフォント、複数のサイズが使われていると、セルからフォントとサイズを取得できません。セルの中の文字を一つ一つ選択し情報を得ることは出来るのですが、処理が遅くなるのと面倒なので最初の1文字の情報をセル全体に適用することにしました。
【日付や小数点表示や桁区切りのカンマ】
Excelのセルから直接データを取得すると、データ(数値)が取得されてしまいます。
日付や小数点表示や桁区切りのカンマなどが数値(「数式バー」に表示される)と取得されます。いろいろと試して見たのですが分からず、仕方がないので、そのシートを一旦「テキスト(タブ区切り)(*.txt)」で保存して、その保存したテキストデータをもう一度でExcelで「文字列形式」で読み込み直して対応することにしました。
【列幅と行高さがキチンと取得できない】
Excelで列幅が「選択範囲に合わせる」になっていたり、行高さが「自動調整」になっていると、情報がちゃんと取得できないことがわかりました。
オリジナルのセルはいじりたくないので、シートをコピーしてそちらで列幅を行高さを取得し、固定に設定し直すことにしました。
余談
【作成Illustratorバージョン】
Illustrator のバージョン8まではデータがPostScript形式で保存されていました。
このPostScript形式は中味がテキストで記載されていて、エディタなどで開いて編集もできます。
バージョン8までのPostScript形式でデータを作成すれば、バージョン9以降でも開くことができるのでPostScript形式で作成しています。
【変換対象】
変換の作業は、一つのセルを「四角」で作成し、その上に「文字」を配置する。
【列幅の寸法】
Excelではセルの「行の高さ」は「13.5」のようにポイントで表示されるが、列の幅は「8.38」のように表示され、これは標準フォントのサイズの数字0〜9の平均の幅だと説明されていたので、フォントによって変わる「列の幅」情報を取得するのは面倒だなと思いつつ、とりあえず、セルの「列の幅」を「Width」プロパティで取得してみるとなんと「ポイント単位」であることがわかりました。
セルの幅と高さが分かればIllustratorのデータに書き換えるのは簡単です。
【セルを長方形(四角に)変換】
(長方形「W 100pt×H 16pt」を変形パレットでxy座標ともに左下を「0」にした場合)
0.4 w    罫線の太さ
100 0 m 右下
0 0 L 左下
0 16 L 左上
100 16 L 右上
100 0 L 右下
s b → 線+塗り f → 塗り s → 線 n →  (線+塗り)なし

四角形は右下の角が「m」となり、後は時計回りで「左下」−「左上」−「右上」−「右下」とxy座標が指示されます。
【文字列の座標位置】
(12ポイント、MS Pゴシック、揃え−左、文字列「0123456789」を
変形パレットでxy座標ともに左下を「0」にした場合)

0 To
1 0 0 1 0 1.6406 0 Tp 1 0 0 1部分は文字の回転・シェアの設定)
x座標
y座標
0 Tv 組方向(横組)
1 Tv(縦組)
TP
0 Tr 文字塗り
0 Ta 揃え
/_MS-PGothic-90ms-RKSJ-H 12 10.3125 -1.6406 Tf フォント名
サイズ
(アセント)
(ディセント)
(0123456789) Tx 文字列
TO

横組の場合、保存されたデータ文字列の基準のy座標はベースライン上になっています。
Illustrator上で左下のy座標を0にしても、実際の保存されたデータはディセント分を足した位置の座標となります。
写植の場合の文字基準は中央にあって計算も楽だったのですが、PCのフォントで困ったことはフォント(メーカ)によって、アセントとディセントは異なった値を採っていることです。
to-Illust.xls ではIllustratorでフォントを変更することも考え、経験的に文字の中央からフォントサイズの38%下がった位置をベースラインとしました。
サイズ指定では、アセントとディセントの値は省略若しくは適当な数値でも、Illustratorでデータを読み込んだ段階で実際に使用されるフォントのディセント値が使われています。

フォント名は必ずPostscript名での表記が必要ですし、そのフォントがインストールされていないとエラーになってしまいます。

文字列の表記方法は、1バイト文字はそのまま表記されます。
ただし、「(」「)」「\」は特殊な意味を持ちますので、「\」を付けて、「(」→「\(」、「)」→「\)」、「\」→「\\」となります。

日本語の2バイト文字、例えば「あ」のシフトJISコード「82A0」の上位2桁「82」と下位2桁「A0」の2つに分け、それぞれを16進数から8進数に変換(82 → 202)(A0 → 240)し、先頭に\を付けて(\202\240)と表記されます。
改行は「\r」で表記されます。

また、イラストレータで保存し直すのであれば、直接「テキスト」を入力しても大丈夫です。
ただし、シフトJISコード「5C」を含む「ソ噂浬欺圭構蚕十申曾箪貼能表」等の文字は「5C」を「\」と認識するためか、「文字化け」、又は「エラー」が起きますので、それらの文字の後ろにそれぞれ「\」を付加すれば回避できるようです。
to-Illust.xls では直接「テキスト」を書き込む方式を採っています。

文字列表記には1行の長さの制限があるようです。正確には調べていませんが240バイトを超えた辺りで読み込みのエラーとなるようです。
100バイトくらいで一旦「) TX」で閉じて、次の行で「(」から始めるように折り返すようにしたほうがいいでしょう。もちろんIllustratorでは1行となります。

(01234567890123456789) TX
(01234567890123456789) TX
(0123456789) Tx

【AIデータとして認識させる】
あとはIllustratorにAIのデータだと認識させる部分を追加すれば完成。
実際にIllustratorでバージョン8以前のファイル形式で保存して、そのファイルからデータ部分を差し替えて使うのが一番いいと思います。
とりあえず完成。
【テキストボックス座標位置】
(長方形「W 100pt×H 16pt」を変形パレットでxy座標ともに左下を「0」に、12ポイント、MS Pゴシック、揃え−左、文字列「0123456789」を入力した場合)

1 To テキストボックスの設定
1 0 0 1 0 16 0 Tp 1 0 0 1部分は文字の回転・シェアの設定)
x座標
y座標
100 0 m
0 0 L
0 16 L
100 16 L
100 0 L
n
テキストボックスエリアの設定(長方形と同じ)
0 Tv 組方向(横組)
1 Tv(縦組)
TP
0 Tr 文字塗り
0 Ta 揃え
/_MS-PGothic-90ms-RKSJ-H 12 10.3125 -1.6406 Tf フォント名
サイズ
(アセント)
(ディセント)
(0123456789) Tx 文字列
TO