如何只求选中文本后面部分数字的和

动作开发 · 1342 次浏览
震惊长安D1犬 创建于 3天0小时前

比如文件名为“YB05012 90-360注塑杯(500个装)五层48x37.5x25  480x375x250”,前面的数字是产品编号和型号,“480x375x250”为产品的长x宽x高,现在只需求长+宽的和。我是做纸箱设计的,纸箱的对称距离为长+宽的和,想在AI和CDR软件中写一个复制动作,把版面图案直接复制到纸箱对称面。


回复内容
阿泽同学 2天18小时前
#1

  1. 在 CDR 中使用
    • 打开 CDR,按 Alt+F11 打开 VBA 编辑器。
    • 插入一个新模块,将上面的 VBA 代码粘贴进去。
    • 关闭 VBA 编辑器,按 Alt+F8 打开宏对话框,选择你创建的宏并运行。

    脚本都能够自动从文件名里提取尺寸信息,计算长 + 宽的和,然后将选中的图案复制到对称位置,从而帮助你更高效地进行纸箱设计。



    Sub CalculateAndDuplicate() ' 声明变量 Dim docName As String Dim regex As Object Dim match As Object Dim length As Double Dim width As Double Dim height As Double Dim symmetryDistance As Double ' 获取活动文档的文件名 docName = ActiveDocument.FullName ' 创建正则表达式对象 Set regex = CreateObject("VBScript.RegExp") regex.Pattern = "(\d+)\s*[xX×]\s*(\d+)\s*[xX×]\s*(\d+)" regex.Global = False ' 执行匹配 Set match = regex.Execute(docName) ' 检查是否找到匹配 If match.Count > 0 Then ' 提取长、宽、高 length = CDbl(match(0).SubMatches(0)) width = CDbl(match(0).SubMatches(1)) height = CDbl(match(0).SubMatches(2)) ' 计算长+宽的和(对称距离) symmetryDistance = length + width ' 显示信息 MsgBox "长: " & length & "mm" & vbCrLf & _ "宽: " & width & "mm" & vbCrLf & _ "高: " & height & "mm" & vbCrLf & _ "对称距离: " & symmetryDistance & "mm", vbInformation, "尺寸信息" ' 复制选中的对象并移动到对称位置 If ActiveSelectionRange.Count > 0 Then ActiveSelectionRange.Duplicate ActiveSelectionRange.ShiftX = symmetryDistance MsgBox "已复制到对称面,距离为 " & symmetryDistance & "mm", vbInformation, "操作完成" Else MsgBox "请先选择要复制的对象", vbExclamation, "操作提示" End If Else MsgBox "未能从文件名中找到尺寸信息,请确保文件名包含类似'480x375x250'的格式", vbExclamation, "错误" End If End Sub

    阿泽同学 最后更新于 2天18小时前
    震惊长安D1犬 回复 阿泽同学 2天18小时前 :

    感谢,大佬!我仿佛打开了新世界的大门,现在还看得不太懂,等会试下

    回复主贴