ClipboardRectangle.bas 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. Attribute VB_Name = "剪贴板尺寸建立矩形"
  2. Public O_O As Double
  3. Sub start()
  4. '// 建立矩形 Width x Height 单位 mm
  5. ' Rectangle 101, 151
  6. ' setRectangle 200, 200
  7. O_O = 0
  8. Dim Str, arr, n
  9. Str = GetClipBoardString
  10. ' 替换 mm x * 换行 TAB 为空格
  11. Str = VBA.Replace(Str, "mm", " ")
  12. Str = VBA.Replace(Str, "x", " ")
  13. Str = VBA.Replace(Str, "*", " ")
  14. Str = VBA.Replace(Str, Chr(13), " ")
  15. Str = VBA.Replace(Str, Chr(9), " ")
  16. Do While InStr(Str, " ") '多个空格换成一个空格
  17. Str = VBA.Replace(Str, " ", " ")
  18. Loop
  19. arr = Split(Str)
  20. Dim x As Double
  21. Dim y As Double
  22. For n = LBound(arr) To UBound(arr) - 1 Step 2
  23. ' MsgBox arr(n)
  24. x = Val(arr(n))
  25. y = Val(arr(n + 1))
  26. If x > 0 And y > 0 Then
  27. Rectangle x, y
  28. O_O = O_O + x + 30
  29. End If
  30. Next
  31. End Sub
  32. Private Function Rectangle(Width As Double, Height As Double)
  33. ActiveDocument.Unit = cdrMillimeter
  34. Dim size As Shape
  35. Dim d As Document
  36. Dim s1 As Shape
  37. '// 建立矩形 Width x Height 单位 mm
  38. Set s1 = ActiveLayer.CreateRectangle(O_O, 0, O_O + Width, Height)
  39. '// 填充颜色无,轮廓颜色 K100,线条粗细0.3mm
  40. s1.Fill.ApplyNoFill
  41. s1.Outline.SetProperties 0.3, OutlineStyles(0), CreateCMYKColor(0, 100, 0, 0), ArrowHeads(0), ArrowHeads(0), cdrFalse, cdrFalse, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100, MiterLimit:=5#
  42. sw = s1.SizeWidth
  43. sh = s1.SizeHeight
  44. Text = "建立矩形:" + Str(sw) + " x" + Str(sh) + "mm"
  45. ' MsgBox Text
  46. Text = Trim(Str(sw)) + "x" + Trim(Str(sh)) + "mm"
  47. Set d = ActiveDocument
  48. Set size = d.ActiveLayer.CreateArtisticText(O_O + sw / 2 - 25, sh + 10, Text)
  49. size.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
  50. End Function
  51. Private Function setRectangle(Width As Double, Height As Double)
  52. Dim s1 As Shape
  53. Set s1 = ActiveSelection
  54. ActiveDocument.Unit = cdrMillimeter
  55. '// 物件中心基准, 先把宽度设定为
  56. ActiveDocument.ReferencePoint = cdrCenter
  57. s1.SetSize Height, Height
  58. '// 物件旋转 30度,轮廓线1mm ,轮廓颜色 M100Y100
  59. s1.Rotate 30#
  60. s1.Outline.SetProperties 1#
  61. s1.Outline.SetProperties Color:=CreateCMYKColor(0, 100, 100, 0)
  62. End Function
  63. Private Function GetClipBoardString() As String
  64. On Error Resume Next
  65. Dim MyData As New DataObject
  66. GetClipBoardString = ""
  67. MyData.GetFromClipboard
  68. GetClipBoardString = MyData.GetText
  69. Set MyData = Nothing
  70. End Function