CoreDraw的几个VBA代码

Sub SaveTextOnly() '备份文本
    Dim p As Page
    Dim nPos As Long
    Dim strName As String
    Dim srAllShapes As New ShapeRange
   
    For Each p In ActiveDocument.Pages
        srAllShapes.AddRange p.Shapes.FindShapes() 'Add each shape to our ShapeRange
    Next p
   
    srAllShapes.RemoveRange srAllShapes.FindAnyOfType(cdrGroupShape, cdrTextShape) 'Remove any groups and Text Objects
    srAllShapes.Delete 'Delete the ShapeRange now contaning all shapes but Text
   
    'Get the FileName of the ActiveDocument
    strName = ActiveDocument.FileName
    nPos = InStrRev(strName, ".")
    If nPos > 0 Then strName = Left(strName, nPos - 1)
    strName = ActiveDocument.FilePath & strName & " - Text Backup.cdr" 'New name for Document
   
    ActiveDocument.SaveAs strName 'Save the Document with new name
End Sub

Sub s删外框改尺寸()
Dim d As Document
Dim p As Page
Dim s As Shape
For Each d In Documents
d.Unit = cdrMillimeter
d.ReferencePoint = cdrCenter
d.MasterPage.GuidesLayer.Shapes.All.Delete
    For Each p In d.Pages
      For Each s In p.Shapes.FindShapes(, cdrCurveShape)
      If s.SizeHeight > 235 Then
      s.Delete
      End If
      Next s
p.Shapes.All.SetSize 170, 240
p.Shapes.All.Group
p.Shapes.All.AlignToPageCenter cdrAlignVCenter + cdrAlignHCenter
p.Shapes.All.Ungroup
   Next p
Next d
End Sub
Sub fgym() '分割页面中所有图像
    On Error GoTo 10
    Dim s1 As Shape, s2 As Shape, p As Page
    For Each p In ActiveDocument.Pages
        Set s1 = p.Shapes.FindShapes(, cdrBitmapShape).Group
        '设置一个容器
        Set s2 = p.ActiveLayer.CreateGridBoxes(0, p.SizeHeight, p.SizeWidth, 0, 2, 1)
        s2.Fill.ApplyNoFill
        s2.Outline.Width = 0
        s1.AddToPowerClip s2, cdrFalse
        s2.OrderToBack
        s2.Ungroup
    Next p
10 End Sub
Sub tr选框删物()
Dim x1 As Double, y1 As Double, x2 As Double, y2 As Double
Dim Shift As Long
Dim b As Boolean
Dim s As Shape, os As Shape, ts As Shape, s1 As Shape
Dim cr As Long, cg As Long, cb As Long
ActiveDocument.BeginCommandGroup "置入容器做修剪" '设定还原步骤

b = ActiveDocument.GetUserArea(x1, y1, x2, y2, Shift, 10, False, 428)
    If Not b Then
        ActivePage.SelectShapesFromRectangle x1, y1, x2, y2, True
        Set s = ActiveSelection.Group
        Set os = ActiveSelection.CustomCommand("Boundary", "CreateBoundary")
            os.Outline.Width = 0
        Set ts = ActiveDocument.ActiveLayer.CreateRectangle(x1, y1, x2, y2)
        Set s1 = ts.Trim(os, True, True)
            ts.Delete
            os.Delete
            s.AddToPowerClip s1, cdrFalse
            SendKeys "{ESC}", True
   End If
ActiveDocument.EndCommandGroup
End Sub
Sub bmptrace把图片转成矢量图()
Dim b As Bitmap
Dim trace As TraceSettings
On Error Resume Next
If ActiveShape.Type <> cdrBitmapShape Or ActiveSelection.Shapes.Count <> 1 Then
MsgBox "请先选择一个要转成矢量的点阵图": Exit Sub
End If
Set b = ActiveShape.Bitmap
Set trace = b.trace(cdrTraceClipart, RemoveBackground:=False)

        trace.Finish
End Sub
原文地址:https://www.cnblogs.com/top5/p/1591522.html