{"id":1032,"date":"2022-05-02T13:47:00","date_gmt":"2022-05-02T13:47:00","guid":{"rendered":"https:\/\/262235.xyz\/?p=1032"},"modified":"2022-05-02T13:47:00","modified_gmt":"2022-05-02T13:47:00","slug":"1032","status":"publish","type":"post","link":"https:\/\/lyvba.com\/index.php\/2022\/05\/02\/1032\/","title":{"rendered":"CorelDRAW VBA \u7f16\u5199\u6700\u7b80\u5355\u7684\u6587\u672c\u8f6c\u66f2\u811a\u672c\uff0c\u4f60\u53ef\u4ee5\u5b66\u5230\u5f88\u591a"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/lyvba.com\/wp-content\/uploads\/2022\/04\/2235738865.webp\" alt=\"\" title=\"\"><\/p>\n<h3>CorelDRAW\u4e2d\u7684\u6587\u5b57\u8f6c\u66f2\u4e3b\u8981\u9488\u5bf9\u6240\u505a\u8bbe\u8ba1\u5b57\u4f53\u8fdb\u884c\u7684\u51bb\u7ed3\u64cd\u4f5c\uff0c\u662f\u4e3a\u4e86\u65b9\u4fbf\u5728\u4e0d\u540c\u7535\u8111\u6253\u5f00CDR\u6587\u4ef6\u4ee5\u6b63\u5e38\u663e\u793a\u3002\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u5370\u5237\u54c1\u90fd\u9700\u8981\u8f6c\u66f2\uff0c\u8f6c\u66f2\u540e\u7684\u6587\u4ef6\u76f8\u5f53\u4e8e\u4e00\u5f20\u56fe\u7247\uff0c\u4e0d\u53ef\u4ee5\u518d\u7f16\u8f91\u3002\u800c\u4e14\u5b83\u662f\u4e00\u4e2a\u4e0d\u53ef\u9006\u7684\u8fc7\u7a0b\uff0c\u4e00\u822c\u6211\u4eec\u90fd\u4f1a\u5728\u6240\u6709\u6392\u7248\u5b8c\u6210\u540e\u4fdd\u5b58\u4e00\u4efd\u526f\u672c\uff0c\u7136\u540e\u518d\u8fdb\u4e00\u6b65\u8f6c\u66f2\u5b58\u4e3a\u8f6c\u66f2\u6587\u4ef6\uff0c\u4ee5\u65b9\u4fbf\u540e\u7eed\u7684\u64cd\u4f5c\uff0c\u672c\u6587\u5c06\u4ecb\u7ecd\u600e\u4e48\u4f18\u96c5\u7684\u5199\u4e00\u4e2a\u6587\u672c\u8f6c\u66f2\u811a\u672c\u3002<\/h3>\n<h2>Shape.ConvertToCurves \u65b9\u6cd5\u5c06\u5f62\u72b6\u8f6c\u6362\u4e3a\u66f2\u7ebf\u3002<\/h2>\n<ul>\n<li>\u6587\u6863\u94fe\u63a5 <a href=\"https:\/\/lyvba.com\/vba\/IDH_Shape_ConvertToCurves.html\">https:\/\/lyvba.com\/vba\/IDH_Shape_ConvertToCurves.html<\/a><\/li>\n<li>\n<p>\u6587\u6863\u4e2d\u6709\u4e2a\u793a\u4f8b\u6e90\u7801: \u6f14\u793a\u4e86\u5efa\u7acb\u6587\u672c\u548c\u8bbe\u7f6e\u5b57\u4f53\uff0c\u7136\u540e\u8f6c\u6210\u66f2\u7ebf<\/p>\n<pre><code>Sub Test_\u5efa\u7acb\u6587\u672c\u548c\u8f6c\u66f2()\n Dim s As Shape, n As Node\n Set s = ActiveLayer.CreateArtisticText(0, 0, \"Jagged\")\n With s.Text.FontProperties\n.Name = \"Arial\"\n.Style = cdrBoldFontStyle\n.Size = 140\n End With\n s.ConvertToCurves\nEnd Sub <\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>\u5b9e\u9645\u6587\u6863\u4e2d\u7b26\u5408\u6211\u4eec\u6279\u91cf\u6587\u672c\u6700\u597d\u7684\u793a\u4f8b\u6e90\u7801\u662f\u4e0b\u9762\u6587\u6863\uff0c\u53ea\u9700\u8981\u5220\u9664\u51e0\u884c<\/h2>\n<h3>Text.ConvertToArtistic \u65b9\u6cd5\u5c06\u6bb5\u843d\u6587\u672c\u66f4\u6539\u4e3a\u7f8e\u672f\u5b57\u3002<\/h3>\n<ul>\n<li>\u6587\u6863\u94fe\u63a5 <a href=\"https:\/\/lyvba.com\/vba\/IDH_Text_ConvertToArtistic.html\">https:\/\/lyvba.com\/vba\/IDH_Text_ConvertToArtistic.html<\/a><\/li>\n<li>\n<p>\u4ee5\u4e0b\u4ee3\u7801\u793a\u4f8b\u5c06\u6240\u6709\u6bb5\u843d\u6587\u672c\u5bf9\u8c61\u8f6c\u6362\u4e3a\u66f2\u7ebf\uff0c\u65b9\u6cd5\u662f\u5148\u5c06\u5b83\u4eec\u8f6c\u6362\u4e3a\u827a\u672f\u6587\u672c\uff0c\u7136\u540e\u518d\u5c06\u5b83\u4eec\u8f6c\u6362\u4e3a\u66f2\u7ebf\uff1a<\/p>\n<pre><code>Sub Test_\u628a\u6bb5\u843d\u6587\u672c\u8f6c\u66f2()\n Dim s As Shape\n For Each s In ActivePage.FindShapes(, cdrTextShape)\nIf s.Text.Type = cdrParagraphText Then\n s.Text.ConvertToArtistic\n s.ConvertToCurves\nEnd If\n Next s\nEnd Sub <\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>CorelDRAW VBA \u6bb5\u843d\u6587\u672c\u53ef\u4ee5\u76f4\u63a5\u8f6c\u66f2\u7ebf\uff0c\u628a\u4e0a\u9762\u4ee3\u7801\uff0c\u5220\u9664\u6bb5\u843d\u6587\u672c\u8f6c\u7f8e\u672f\u6587\u672c\u90e8\u5206\uff0c\u4e00\u4e2a\u6700\u7b80\u5355\u7684\u6587\u672c\u8f6c\u66f2\u4ee3\u7801\u5c31\u51fa\u6765<\/h3>\n<pre><code>'\/\/ \u6587\u672c\u8f6c\u66f2\u7cbe\u7b80\u7248\nSub TextConvertToCurves()\nDim s As Shape\n  For Each s In ActivePage.FindShapes(, cdrTextShape)\n    s.ConvertToCurves\nNext s\nEnd Sub<\/code><\/pre>\n<h3>\u4ee3\u7801 <code>ActivePage.FindShapes(, cdrTextShape)<\/code> \u65b9\u6cd5\u67e5\u627e\u6587\u672c\u5c5e\u6027\u7684\u6240\u6709\u5f62\u72b6, \u5b83\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u627e\u5230\u7684\u5f62\u72b6\u7684 ShapeRange \u5bf9\u8c61\u3002 \u4e5f\u53ef\u4ee5\u4f7f\u7528\u5b9a\u4e49\u4e00\u4e2a <code>ShapeRange<\/code> \u53d8\u91cf\uff0c\u4f7f\u7528 <code>Type:=cdrTextShape<\/code> \u505a\u4e3a\u53c2\u6570<\/h3>\n<pre><code>Dim sr As ShapeRange\nSet sr = ActivePage.FindShapes(Type:=cdrTextShape)<\/code><\/pre>\n<h2>\u63a5\u4e0b\u6765\u6211\u4eec\u5b66\u4e60 <code>ShapeRange<\/code> \u7c7b, \u8bf7\u67e5\u770b\u6587\u6863 <a href=\"https:\/\/lyvba.com\/vba\/IDP_ShapeRange.html\">Properties-\u5c5e\u6027<\/a> \u25c6 <a href=\"https:\/\/lyvba.com\/vba\/IDM_ShapeRange.html\">Methods-\u65b9\u6cd5<\/a><\/h2>\n<h3>ShapeRange \u7c7b\u8868\u793a Shape \u5bf9\u8c61\u7684\u52a8\u6001\u6570\u7ec4\u3002 \u7279\u5b9a\u4e8e\u5f62\u72b6\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u53ef\u4ee5\u5e94\u7528\u4e8e\u6570\u7ec4\uff08\u8303\u56f4\uff09\u7684\u6bcf\u4e2a\u5f62\u72b6\u3002\u60a8\u53ef\u4ee5\u4f7f\u7528 Visual Basic \u4e2d\u7684 New \u5173\u952e\u5b57\u6765\u521b\u5efa ShapeRange \u5bf9\u8c61\u3002<\/h3>\n<ul>\n<li>\n<p>\u6587\u6863\u4e2d\u7684\u7b80\u5355\u793a\u4f8b\u6e90\u7801\u548c\u6ce8\u91ca<\/p>\n<h3><code>ShapeRange.Add<\/code> \u65b9\u6cd5\u5c06\u6307\u5b9a\u7684\u5f62\u72b6\u6dfb\u52a0\u5230\u8303\u56f4<\/h3>\n<pre><code>' ShapeRange.Add  \u5b50\u6dfb\u52a0\uff08\u5f62\u72b6\u4e3a\u5f62\u72b6\uff09\n' Add \u65b9\u6cd5\u5c06\u6307\u5b9a\u7684\u5f62\u72b6\u6dfb\u52a0\u5230\u8303\u56f4\n' \u4e0b\u9762\u7684\u4ee3\u7801\u793a\u4f8b\u521b\u5efa\u4e00\u4e2a\u7531\u5706\u5f62\u548c\u4e24\u6761\u7ebf\u7ec4\u6210\u7684\u6ce8\u518c\u6807\u8bb0\uff0c\u5c06\u5bf9\u8c61\u5206\u7ec4\uff0c\u7136\u540e\u5c06\u5b83\u4eec\u79fb\u52a8\u5230\u9875\u9762\u4e2d\u5fc3\uff1a\n\nSub ShapeRange_Add()\nDim sGroup As Shape\nDim sr As New ShapeRange\nsr.Add ActiveLayer.CreateEllipse2(0, 0, 0.25)\nsr.Add ActiveLayer.CreateLineSegment(-0.5, 0, 0.5, 0)\nsr.Add ActiveLayer.CreateLineSegment(0, -0.5, 0, 0.5)\nsr.SetOutlineProperties 0.03\nSet sGroup = sr.Group\nsGroup.Move ActivePage.SizeWidth \/ 2, ActivePage.SizeHeight \/ 2\nEnd Sub<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>AddToPowerClip \u65b9\u6cd5\u5c06\u5f62\u72b6\u8303\u56f4\u6dfb\u52a0\u5230\u6307\u5b9a\u7684 PowerClip \u5bb9\u5668<\/h3>\n<pre><code>'\/\/ AddToPowerClip \u65b9\u6cd5\u5c06\u5f62\u72b6\u8303\u56f4\u6dfb\u52a0\u5230\u6307\u5b9a\u7684 PowerClip \u5bb9\u5668\u3002\nSub ShapeRange_AddToPowerClip()\n  Dim sr As New ShapeRange\n  Dim s As Shape, n As Long\n\n  '\/\/ \u968f\u673a\u7ed8\u5236 150\u4e2a\u5f69\u8272\u5706\u5f62\n  For n = 1 To 150\n    Set s = ActiveLayer.CreateEllipse2(Rnd() * 4, Rnd() * 2, Rnd() * 0.3)\n    s.Fill.UniformColor.RGBAssign Rnd() * 255, Rnd() * 255, Rnd() * 255\n    sr.Add s\n  Next n\n  '\/\/ \u7ed8\u5236\u77e9\u5f62, \u5750\u68070,0 \u5c3a\u5bf83x2in\u77e9\u5f62\u5f53\u4f5c\u56fe\u6846\u7cbe\u786e\u526a\u88c1\n  Set s = ActiveLayer.CreateRectangle2(0, 0, 3, 2)\n  sr.AddToPowerClip s\nEnd Sub<\/code><\/pre>\n<h3>ShapeRange.AddToSelection \u65b9\u6cd5\u5c06\u8303\u56f4\u5185\u7684\u6240\u6709\u5f62\u72b6\u6dfb\u52a0\u5230\u5f53\u524d\u9009\u62e9\u3002 \u76f8\u5173 <code>CreateSelection<\/code> \u548c <code>RemoveFromSelection<\/code><\/h3>\n<pre><code>' ShapeRange.AddToSelection  \u65b9\u6cd5\u5c06\u8303\u56f4\u5185\u7684\u6240\u6709\u5f62\u72b6\u6dfb\u52a0\u5230\u5f53\u524d\u9009\u62e9\u3002\n' \u53e6\u8bf7\u53c2\u9605 CreateSelection \u548c RemoveFromSelection \u65b9\u6cd5\n' \u4ee3\u7801\u793a\u4f8b\u9009\u62e9\u5f53\u524d\u9875\u9762\u4e0a\u7684\u6240\u6709\u692d\u5706\u548c\u77e9\u5f62\uff1a\nSub ShapeRange_AddToSelection()\n  ActivePage.FindShapes(Type:=cdrEllipseShape).CreateSelection\n  ActivePage.FindShapes(Type:=cdrRectangleShape).AddToSelection\n\n  '\/\/ \u7b2c\u4e00\u4e2a\u548c\u6700\u540e\u4e00\u4e2a\u7269\u4ef6\u79fb\u9664\u9009\u62e9\n  Dim ssr As ShapeRange\n  Set ssr = ActiveSelectionRange\n  ssr.FirstShape.RemoveFromSelection\n  ssr.LastShape.RemoveFromSelection\nEnd Sub<\/code><\/pre>\n<h2>\u5b9e\u9645CDR\u6587\u4ef6\u4f1a\u628a\u6587\u672c\u4e0d\u5c0f\u5fc3\u653e\u5230\u56fe\u6846\u526a\u88c1 <code>PowerClip<\/code> \u5bb9\u5668\u4e2d\uff0c\u641e\u61c2\u4ee5\u4e0a\u4ee3\u7801\u4ee5\u540e\uff0c\u6211\u4eec\u6765\u5199\u652f\u6301\u652f\u6301\u56fe\u6846\u7cbe\u786e\u526a\u88c1\u7684\u4ee3\u7801\u3002<\/h2>\n<h3>\u4f7f\u7528 Google \u641c\u7d22\u4e00\u4e2a <code>FindAllShapes<\/code> \u7684\u51fd\u6570\uff0c\u67e5\u5230\u4ee3\u7801\u5927\u4f53\u5982\u4e0b\uff0c\u4ee3\u7801\u4f7f\u7528CQL\u641c\u7d22\u56fe\u6846\u526a\u88c1 <code>PowerClip<\/code> \u5bb9\u5668\uff0c\u628a\u5bb9\u5668\u4e2d\u7684\u6240\u6709\u7269\u4ef6\u6dfb\u52a0\u5230ShapeRange\u8303\u56f4\u4e2d\u3002<\/h3>\n<pre><code>Function FindAllShapes() As ShapeRange\n    Dim s As Shape\n    Dim srPowerClipped As New ShapeRange\n    Dim sr As ShapeRange, srAll As New ShapeRange\n\n    If ActiveSelection.Shapes.Count &gt; 0 Then\n        Set sr = ActiveSelection.Shapes.FindShapes()\n    Else\n        Set sr = ActivePage.Shapes.FindShapes()\n    End If\n\n    Do\n        For Each s In sr.Shapes.FindShapes(Query:=\"!@com.powerclip.IsNull\")\n            srPowerClipped.AddRange s.PowerClip.Shapes.FindShapes()\n        Next s\n        srAll.AddRange sr\n        sr.RemoveAll\n        sr.AddRange srPowerClipped\n        srPowerClipped.RemoveAll\n    Loop Until sr.Count = 0\n\n    Set FindAllShapes = srAll\nEnd Function<\/code><\/pre>\n<h2>\u6700\u7cbe\u7b80\u652f\u6301\u56fe\u6846\u7cbe\u786e\u526a\u88c1\u6587\u672c\u8f6c\u66f2\u7248\u5b8c\u6210\uff0c\u53ea\u9700\u8981\u628a <code>ActivePage<\/code> \u6539\u6210 <code>FindAllShapes.Shapes<\/code><\/h2>\n<pre><code>Sub TextShapes_ConvertToCurves()\n  Dim s As Shape\n  For Each s In FindAllShapes.Shapes.FindShapes(Type:=cdrTextShape)\n    s.ConvertToCurves\n  Next s\nEnd Sub<\/code><\/pre>\n<h2>\u6211\u4eec\u4e5f\u53ef\u4ee5\u8fd9\u6837\u6765\u5199\u652f\u6301\u56fe\u6846\u7cbe\u786e\u526a\u88c1\u7684\u6587\u672c\u8f6c\u66f2\u7ebf<\/h2>\n<pre><code>'\/\/ \u652f\u6301\u4e00\u7ea7\u56fe\u6846\u7cbe\u786e\u526a\u88c1\u7684\u6587\u672c\u8f6c\u66f2\u7ebf\nSub TextShape_ConvertToCurves()\n  Dim s As Shape\n  For Each s In ActivePage.FindShapes(Type:=cdrTextShape)\n    s.ConvertToCurves\n  Next s\n\n  '\/\/ \u56fe\u6846\u7cbe\u786e\u526a\u88c1\u6587\u672c\u8f6c\u66f2\u7ebf\n  Dim pwc As PowerClip\n  For Each s In ActivePage.Shapes\n    Set pwc = Nothing\n    On Error Resume Next\n    Set pwc = s.PowerClip\n    On Error GoTo 0\n\n    If Not pwc Is Nothing Then\n      s.PowerClip.Shapes.All.ConvertToCurves\n    End If\n  Next s\n\nEnd Sub<\/code><\/pre>\n<h2>\u5173\u4e8e\u56fe\u6846\u7cbe\u786e\u526a <code>PowerClip<\/code><\/h2>\n<h3><code>Shape.AddToPowerClip<\/code>  \u65b9\u6cd5\u5c06\u5f53\u524d\u5f62\u72b6\u5bf9\u8c61\u6dfb\u52a0\u5230 PowerClip \u5bb9\u5668<\/h3>\n<p>\u4ee5\u4e0b\u4ee3\u7801\u793a\u4f8b\u521b\u5efa\u4e00\u4e2a\u77e9\u5f62\u548c\u4e00\u4e2a\u692d\u5706\uff0c\u7136\u540e\u5c06\u692d\u5706\u653e\u5728\u77e9\u5f62\u5185\uff1a<\/p>\n<pre><code>Sub Test_AddToPowerClip()\n Dim rect As Shape, ell As Shape\n Set rect = ActiveLayer.CreateRectangle(0, 0, 4, 3)\n rect.Fill.UniformColor.RGBAssign 255, 0, 0\n Set ell = ActiveLayer.CreateEllipse(2, 1, 5, 4)\n ell.Fill.UniformColor.RGBAssign 255, 255, 0\n ell.AddToPowerClip rect\nEnd Sub <\/code><\/pre>\n<h3><code>PowerClip.Shapes<\/code> \u5c5e\u6027\u8fd4\u56de\u5305\u542b PowerClip \u4e2d\u6240\u6709\u5f62\u72b6 \u7684Shapes<\/h3>\n<ul>\n<li><a href=\"https:\/\/lyvba.com\/vba\/IDH_PowerClip_Shapes.html\">https:\/\/lyvba.com\/vba\/IDH_PowerClip_Shapes.html<\/a><\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u4ee3\u7801\u793a\u4f8b\u7528\u7ea2\u8272\u586b\u5145\u653e\u7f6e\u5728 PowerClip \u5185\u7684\u6240\u6709\u77e9\u5f62\uff1a<\/p>\n<pre><code>Sub Test_PowerClip()\n Dim s As Shape, sp As Shape\n Dim pwc As PowerClip\n For Each s In ActivePage.Shapes\n  Set pwc = Nothing\n  On Error Resume Next\n  Set pwc = s.PowerClip\n  On Error GoTo 0\n  If not pwc is nothing then\n   for each sp In pwc.Shapes\n    If sp.Type = cdrRectangleShape Then\n     sp.Fill.UniformColor.RGBAssign 255, 0, 0\n    End If\n   Next sp\n  End If\n Next s\nEnd Sub <\/code><\/pre>\n<p>\u4ee5\u4e0b\u4ee3\u7801\u793a\u4f8b\u4e3a\u9875\u9762\u4e0a\u7684\u6bcf\u4e2a PowerClip \u6dfb\u52a020\u6761\u5782\u76f4\u7ebf<\/p>\n<pre><code>Sub Test_PowerClip2()\n Const NumLines As Long = 20\n Dim s As Shape\n Dim pwc As PowerClip\n Dim x As Double, y As Double, sx As Double, sy As Double\n Dim xx As Double\n Dim n As Long\n For Each s In ActivePage.Shapes\n  Set pwc = Nothing\n  On Error Resume Next\n  Set pwc = s.PowerClip\n  On Error GoTo 0\n  If Not pwc Is Nothing Then\n   s.CreateSelection\n   s.GetBoundingBox x, y, sx, sy\n   pwc.EnterEditMode\n   For n = 1 To NumLines\n    xx = x + n * sx \/ (NumLines + 1)\n    ActiveLayer.CreateLineSegment xx, y, xx, y + sy\n   Next n\n   pwc.LeaveEditMode\n  End If\n Next s\nEnd Sub <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>CorelDRAW\u4e2d\u7684\u6587\u5b57\u8f6c\u66f2\u4e3b\u8981\u9488\u5bf9\u6240\u505a\u8bbe\u8ba1\u5b57\u4f53\u8fdb\u884c\u7684\u51bb\u7ed3\u64cd\u4f5c\uff0c\u662f\u4e3a\u4e86\u65b9\u4fbf\u5728\u4e0d\u540c\u7535\u8111\u6253\u5f00CDR\u6587\u4ef6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,12],"tags":[67],"class_list":["post-1032","post","type-post","status-publish","format-standard","hentry","category-soft","category-learn","tag-vba"],"_links":{"self":[{"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/posts\/1032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1032"}],"version-history":[{"count":0,"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/posts\/1032\/revisions"}],"wp:attachment":[{"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/categories?post=1032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lyvba.com\/index.php\/wp-json\/wp\/v2\/tags?post=1032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}