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
わからなかったので思い切ってお聞きしたいと思います。
今まで、
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を作成するなんてことは
あまりやらないのかもしれませんが、
よろしくお願いします。
[344]Re: Indesign2.0.2 → CS3 の変更 |
投稿者:いき |
投稿日:2007/11/29(Thu) 11:44:26
とりあえず、流星さんのブログを紹介しておきます。
デバッグの仕方など、丁寧に解説されています。
http://blog.livedoor.jp/ryusei3000/
もし解決しないようでしたら、差し支えなければスクリプトの全文を書いていただいた方がレスもつきやすいのではないかと思いますが。
» 2
デバッグの仕方など、丁寧に解説されています。
http://blog.livedoor.jp/ryusei3000/
もし解決しないようでしたら、差し支えなければスクリプトの全文を書いていただいた方がレスもつきやすいのではないかと思いますが。
[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
ブログも拝見させていただきました。
インテリセンス機能やオブジェクトブラウザは使っており、
そこで『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・・・も変更させてもらいました)
なにかわかることがあったらご教授ください。
よろしくお願いいたします。
[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とドキュメントの関係がどのようになっているかを確認されるとよいと思います。
わたしはXMLを使ったことがないのであてずっぽうになりますが、ソースコードを見ていますと、XML要素がテキストフレームに割り当てられているように見えます。
おそらく2.0とCS以降ではXMLの扱い方が大幅に変わったのではないかと想像します。
2.0とCS3の両方を使える状態でしたら、一度2.0で完成されたドキュメントをCS3で読み込んで、XMLとドキュメントの関係がどのようになっているかを確認されるとよいと思います。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)