API.bas 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. Attribute VB_Name = "API"
  2. '// 获得剪贴板文本字符
  3. Public Function GetClipBoardString() As String
  4. On Error Resume Next
  5. Dim MyData As New DataObject
  6. GetClipBoardString = ""
  7. MyData.GetFromClipboard
  8. GetClipBoardString = MyData.GetText
  9. Set MyData = Nothing
  10. End Function
  11. '// 文本字符复制到剪贴板
  12. Public Function WriteClipBoard(s As String)
  13. On Error Resume Next
  14. Dim MyData As New DataObject
  15. MyData.SetText s
  16. MyData.PutInClipboard
  17. End Function
  18. '// 获得数组元素个数
  19. Public Function arrlen(src As Variant) As Integer
  20. On Error Resume Next '空意味着 0 长度
  21. arrlen = (UBound(src) - LBound(src))
  22. End Function
  23. '// 对数组进行排序[单维]
  24. Public Function ArraySort(src As Variant) As Variant
  25. Dim out As Long, i As Long, tmp As Variant
  26. For out = LBound(src) To UBound(src) - 1
  27. For i = out + 1 To UBound(src)
  28. If src(out) > src(i) Then
  29. tmp = src(i): src(i) = src(out): src(out) = tmp
  30. End If
  31. Next i
  32. Next out
  33. ArraySort = src
  34. End Function
  35. '// 测试数组排序
  36. Private test_ArraySort()
  37. Dim arr As Variant, i As Integer
  38. arr = Array(5, 4, 3, 2, 1, 9, 999, 33)
  39. For i = 0 To arrlen(arr) - 1
  40. Debug.Print arr(i);
  41. Next i
  42. Debug.Print arrlen(arr)
  43. ArraySort arr
  44. For i = 0 To arrlen(arr) - 1
  45. Debug.Print arr(i);
  46. Next i
  47. End Sub
  48. Function FindAllShapes() As ShapeRange
  49. Dim s As Shape
  50. Dim srPowerClipped As New ShapeRange
  51. Dim sr As ShapeRange, srAll As New ShapeRange
  52. If ActiveSelection.Shapes.Count > 0 Then
  53. Set sr = ActiveSelection.Shapes.FindShapes()
  54. Else
  55. Set sr = ActivePage.Shapes.FindShapes()
  56. End If
  57. Do
  58. For Each s In sr.Shapes.FindShapes(Query:="[email protected]")
  59. srPowerClipped.AddRange s.PowerClip.Shapes.FindShapes()
  60. Next s
  61. srAll.AddRange sr
  62. sr.RemoveAll
  63. sr.AddRange srPowerClipped
  64. srPowerClipped.RemoveAll
  65. Loop Until sr.Count = 0
  66. Set FindAllShapes = srAll
  67. End Function