私は文書上のすべてのテキストを検索し、すべてを曲線に変換するマクロを持っています。このマクロはまた、CQLの範囲外であるpowerclipを調べます。以下は参照されたオブジェクトは存在しませんか?
私のコードです:
Public Sub convertText()
Dim pg As Page
Dim shRange As ShapeRange
Dim sh As Shape
For Each pg In ActiveDocument.Pages
pg.Activate
Set shRange = FindAllPCShapes.Shapes.FindShapes(Query:="@type='text:artistic' or @type='text:paragraph'")
For Each sh In shRange
sh.ConvertToCurves
Next sh
Next pg
End Sub
Function FindAllPCShapes(Optional LngLevel As Long) As ShapeRange ' Shelby's function
Dim s As Shape
Dim srPowerClipped As New ShapeRange, srJustClipped As New ShapeRange
Dim sr As ShapeRange, srAll As New ShapeRange
Dim bFound As Boolean, i&
bFound = False
If ActiveSelection.Shapes.count > 0 Then
Set sr = ActiveSelection.Shapes.FindShapes()
Else
Set sr = ActivePage.Shapes.FindShapes()
End If
i = 0
Do
For Each s In sr.Shapes.FindShapes(Query:="[email protected]")
srPowerClipped.AddRange s.PowerClip.Shapes.FindShapes()
Next s
If srPowerClipped.count > 0 Then bFound = True: i = i + 1
If i = LngLevel And bFound Then Set FindAllPCShapes = srPowerClipped: Exit Function
bFound = False
srAll.AddRange sr
sr.RemoveAll
sr.AddRange srPowerClipped
If LngLevel = -1 Then srJustClipped.AddRange srPowerClipped
srPowerClipped.RemoveAll
Loop Until sr.count = 0
If LngLevel = -1 Then
Set FindAllPCShapes = srJustClipped
Else
Set FindAllPCShapes = srAll
End If
End Function
それはいくつかのケースで正常に動作しますが、私はshRangeの各SH「は、参照されるオブジェクトが存在しなくなった」というエラーが発生しますのためにいくつかのドキュメントでエラーをキャッチ。どうやらこれはpowerclipの中にネストされたグループのためです。
エラーを次回に追加することでエラーを無視しようとしましたが、マクロがうまく動作します。しかし、私は自分のコードで何がエラーなのかを知りたいので、将来のトラブルを避けることができます。マクロのすべてのエラーを無視しないでください。
ここでは、エラーを示すサンプルドキュメントを示します。 https://www.dropbox.com/s/lpi568eoltc8cxy/ReferenceError.cdr?dl=0
は、私が遭遇したと思うエラーが何もによるものであるあなたに
まだ何もしていません。いや、それはshRangeをチェックすることはありませんので、エラーがforeachループ内で発生すると、もう一回何もありませんそれはループの中にあります。 –
ファイルをテストするためにCorelDrawを使用しないでください。構文に基づいて、 'For sh in shRange.Shapes'がありますか? – PatricK