|
分類:[VB6 以前]
vb6.0 Indesign CS3 を使っています。 どなたかわかる方いらっしゃいましたら、ご教授ください。 今までIndesignが2.0だったのですが、今回CS3になりました。 VBからIndesignのテキストフレームにデータを乗せてPDFを出力するという処理をしています。
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
'◆◆ココです◆◆cs3にはAssociatedObjectがないらしい 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("gaiji") End Select Next '-----------------------外字処理
Call Choutai(wTextFrame, Tag) TagErr: Call WriteLog("Tag Error - " & Doc.Name & "/" & Tag & "/" & Text) End Sub
今までは上記のプログラムで動いていたのですが、CS3に変更したことにより あちこちでエラーが出てしまい(デバッグ、EXE作成時)、少しずつ直しています。
今、困っているのはテキストフレームへのセットに時間がかかるということです。 Set wTextFrame = Doc.XMLElements.Item(Tag).AssociatedObject.TextFrames.Item(1) この1行を、
For Each allobj In Doc.AllPageItems If TypeName(allobj) = "TextFrame" Then If Not allobj.AssociatedXMLElement Is Nothing Then If allobj.AssociatedXMLElement.MarkupTag.Name = Tag Then Set wTextFrame = allobj Exit For End If End If End If Next
と書くことによって2.0と同じことはできたのですが、 かなり時間がかかってしまいます。 全部のオブジェクトを対象に探しに行っているからだと思うのですが、 他の書き方などありましたら教えてください。
よろしくお願いいたします。
|