- 締切済み
いつもお世話になっております。
いつもお世話になっております。 当方、Windows2000+VB6+Illustrator9.0.2で開発業務を行っております。 どうしても分からない点が一点ございますので、どなたかお力添えをいただければ幸いです。 よろしくお願いいたします。 現在、Illstrator9.0.2で作成されたドキュメントに対して、 ドキュメントの中で使用しているテキストオブジェクトのプロパティ (フォント名やサイズ、長体率など)を取得し、 CSVとして吐き出すようなプログラムを作成しております。 その中で、テキストオブジェクト(TextArtItem)に日本語(2バイト文字)が含まれている場合、 その文字列(Contents)の取得が不安定になります。 具体的には、まったく取得できないか、最初の2~3文字のみしか取得できなくなります。 1バイト文字のみ含まれている場合は問題なく取得できております。 (参考:Windows7+VB2008+IllustratorCS5環境では 2バイト文字でもContentsメソッドで問題なく取得できることを確認しました) Illustrator9における2バイト文字の取得方について、何かいい方法があればご教示願います。 よろしくお願い申し上げます。 以下、ソースです。 [準備] Illustrator9.0.2でレイヤー1にテキスト入力ツールで「あいうえお」と入力し、 test.aiとしてcドライブ直下に保存 [ソース] Sub testtest() Dim App As Illustrator.Application Dim Doc As Illustrator.Document Dim Lyr As Illustrator.Layer Dim Txt As Illustrator.TextArtItem Dim Str As String App.Open("C:\test.ai") Set Doc = App.ActiveDocument For Each Lyr In Doc.Layers For Each Txt In Lyr.TextArtItems Str = Txt.Contents Next Next '変数Strをcsvに吐き出す処理は省略 End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- foomufoomu
- ベストアンサー率36% (1018/2761)
Illustratorのオブジェクトについては知らないのですが、 >Windows2000+VB6+Illustrator9.0.2 では、だめで、 >Windows7+VB2008+IllustratorCS5 ではOK となると、 Illustrator9.0.2 のContentsメソッドが日本語に対応していないのでしょう。 ShiftJis日本語コードの2バイト目に"\"などの特殊な記号が含まれていると、正しく処理できないのは、外国生まれのソフトにはよくあることですから。 Contents以外にデータを取り出す方法はありませんか? たとえばバイナリで取り出して、VBの処理で日本語化するなどで対応できないでしょうか。
お礼
アドバイスありがとうございます。 確かに外国のソフトで2バイト扱うのは厄介ですね。 昔、asp.netでクライアント側のスクリプトを埋める際、 閉じタグを"</" & "script>"としたのを思い出しました。 Contents以外に文字列の取得ができる方法を知りませんので、 もう少しリファレンスを調べてみようと思います。 あと、バイナリにしてはどうかというアドバイスをいただいて、 一つ考えたのは一度ドキュメントで使用している文字列を UNICODEに置き換えてから取得を行い、 取得できたら日本語に戻す、というやり方です。 休み明けにチャレンジしてみますので、 うまくいったらまたご報告させていただきます。 いいヒントをいただき、ありがとうございました。