Indesign2.0.2 → CS3 の変更

[343]Indesign2.0.2 → CS3 の変更 | 投稿者:ようすけ | 投稿日:2007/11/29(Thu) 10:28:05
いろいろ調べてるつもりなんですが、
わからなかったので思い切ってお聞きしたいと思います。

今まで、
VB6とIndesign2.0.2を使ってPDFファイルを作ってました。
IndesignをCS3にしたところ、VBのプログラムが
正常に動作しなくなってしまいました。

Set wTextFrame = Doc.XMLElements.Item(Tag).AssociatedObject.TextFrames.Item(1)

ってとろなんですが、どなたかわかる方いらっしゃいますか?
実は、外注さんに作ってもらったプログラムでして、
自分では少ししかわかりません。

Dim wStyles     As CharStyles
というところもCS3にはCharStylesというのがないらしく、
調べてみたらCharacterStylesというのがあったので
それに変更しました。
これでいいのかわかっていません。
なんとなく似た文字列だったので変更してみました。

VBからIndesignを使ってPDFを作成するなんてことは
あまりやらないのかもしれませんが、
よろしくお願いします。
» 1
[344]Re: Indesign2.0.2 → CS3 の変更 | 投稿者:いき | 投稿日:2007/11/29(Thu) 11:44:26
とりあえず、流星さんのブログを紹介しておきます。
デバッグの仕方など、丁寧に解説されています。
http://blog.livedoor.jp/ryusei3000/

もし解決しないようでしたら、差し支えなければスクリプトの全文を書いていただいた方がレスもつきやすいのではないかと思いますが。
» 2
[345]Re: Indesign2.0.2 → CS3 の変更 | 投稿者:ようすけ | 投稿日:2007/11/29(Thu) 13:34:11
早速のレスポンス、ありがとうございます。
ブログも拝見させていただきました。
インテリセンス機能やオブジェクトブラウザは使っており、
そこで『CharStylesは使えないらしい・・・』という結論を出しました。

Private Sub SetText(Doc As InDesign.Document, Tag As String, Text As String, Optional Mode As String = "")
'    Dim wStyles     As CharStyles
'◆◆ cs3にはCharStylesはないらしい ◆◆
   Dim wStyles     As CharacterStyles
   
   Dim wTextFrame  As TextFrame
   
   If Text = "" Then Exit Sub
   
'debug用にコメント    On Error GoTo TagErr

'    Set wStyles = Doc.CharStyles
'◆◆ cs3にはCharStylesはないらしい ◆◆
   Set wStyles = Doc.CharacterStyles
'◆◆ココです◆◆
'    Set wTextFrame = Doc.XMLElements.Item(Tag).AssociatedObject.TextFrames.Item(1)
   
   If Len(Text) <= 2 And Left(Text, 1) = "!" Then
       wTextFrame.TextContents = "?" & Mid(Text, 2)
       wTextFrame.Paragraphs(1).characters.Item(1).applystyle wStyles("Rev")
       
   Else
       wTextFrame.TextContents = Text
   End If

   '-----------------------外字処理
   Dim n As Integer
   For n = 1 To Len(Text)
       Select Case AscW(Mid(Text, n, 1))
       Case -8192 To -8192 + 1880          'UnicodeでE000から1880文字を外字とみなす
           wTextFrame.Paragraphs(1).characters.Item(n).applystyle wStyles("aaa")
       End Select
   Next
   '-----------------------外字処理

   Call Choutai(wTextFrame, Tag)
   
   Select Case Mode
   Case "Ins"
       wTextFrame.Paragraphs(1).applystyle wStyles("BlueUnderLine")
   Case "Del"
       wTextFrame.Paragraphs(1).applystyle wStyles("BlueStroke")
   Case "Upd"
       wTextFrame.Paragraphs(1).applystyle wStyles("BlueUnderLine")
   Case ""
   End Select
   Exit Sub
   
TagErr:
   Call WriteLog("Tag Error - " & Doc.Name & "/" & Tag & "/" & Text)
End Sub

上記、wStylesの『aaa』は変更させていただきました。
とりあえず、サブルーチンの部分だけ貼り付けましたが、
これ以外に必要なところはあるでしょうか?

xmlは
<Docs>
    <Doc XMLF="K1.xml" Did="1">a.indd</Doc>
    <Doc XMLF="K2.xml" Did="2">b.indd</Doc>
    <Doc XMLF="J1.xml" Did="3">c.indd</Doc>
    <Doc XMLF="J2.xml" Did="4">d.indd</Doc>
    <Doc XMLF="T1.xml" Did="5">e.indd</Doc>
    <Doc XMLF="M1.xml" Did="7">f.indd</Doc>
    <Doc XMLF="C1.xml" Did="10">g.indd</Doc>
    <Doc XMLF="C2.xml" Did="11">h.indd</Doc>
</Docs>
となっています。(a,b,c・・・も変更させてもらいました)

なにかわかることがあったらご教授ください。
よろしくお願いいたします。
» 3
[346]Re: Indesign2.0.2 → CS3 の変更 | 投稿者:お~まち | 投稿日:2007/11/29(Thu) 17:11:23
AssociatedObjectプロパティはCS以降にはありませんので、そこでエラーが出ているんだと思います。
わたしはXMLを使ったことがないのであてずっぽうになりますが、ソースコードを見ていますと、XML要素がテキストフレームに割り当てられているように見えます。
おそらく2.0とCS以降ではXMLの扱い方が大幅に変わったのではないかと想像します。

2.0とCS3の両方を使える状態でしたら、一度2.0で完成されたドキュメントをCS3で読み込んで、XMLとドキュメントの関係がどのようになっているかを確認されるとよいと思います。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア