QQ登录

只需一步,快速开始

查看: 701|回复: 7
收起左侧

【探讨】VBA_GMS 物体处理速度加快方法

[复制链接]
累计签到:743 天
连续签到:15 天
发表于 2024-9-30 12:15:52 | 显示全部楼层 |阅读模式
本帖最后由 zhangmengqtzm 于 2024-9-30 12:18 编辑

做了几个小快捷按钮,工作当中感觉比较常用,也算是提高工作效率吧。但发现有个问题出现了,就是【选区文本】(只选择当前选区内的文本)和【文本之外】(选择当前选区内除文本之外的物件),选择选区内文本这个命令还比较快,基本上能达到秒选。但文本之外命令时目前使用的是排除字体法要排除每一个字体,排除效率太低下。能不能通过VB代码优化也能达到秒选,就像【智能居中】和【全部转黑】达到这样的效率,感觉蘭公子做的CPG插件那样达到秒选的感觉!可惜不会CPG编程,仅会一点VB。哪位大佬把代码优化一下,不胜感谢!

(我原本思路是想着把字体先选出来group群组一下,再排除一下这个group,排除一个组比分别排除肯定快一些,但未能如愿)


ActiveDocument.Unit = CDRMillimeter
Dim OrigSelection As ShapeRange
Set OrigSelection = ActiveSelectionRange
OrigSelection.UngroupEx
OrigSelection.Shapes.FindShapes(Type:=cdrTextShape).RemoveFromSelection
End Sub



还有就是变换字体,小批量还不怎么明显,大批量修改字体时,变换字体的速度也是慢也达不到秒变的效率。
Sub ChangeFontTo(ByVal fontName As String)
    Dim sr As Shape
        For Each sr In ActiveSelection.Shapes
            If sr.Type = cdrTextShape Then
                If sr.Text.Selection.Length <> 0 Then
                    sr.Text.Selection.LanguageID = 2052
                    sr.Text.Selection.font = fontName
                Else
                    sr.Text.Story.LanguageID = 2052
                    sr.Text.Story.font = fontName
                End If
            End If
        Next sr
End Sub



更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1印币 +20 活跃值 +1 技术 +1 收起 理由
华印客服 + 20 + 1 + 1 感谢分享与探讨,华印有你更精彩!.

查看全部评分

华印网相关搜索

累计签到:1650 天
连续签到:1 天
发表于 2024-9-30 12:44:21 | 显示全部楼层
换2020以上的版本,代码运行能快一倍。
回复 支持 反对 送花

使用道具 举报

累计签到:187 天
连续签到:7 天
发表于 2024-9-30 18:46:38 | 显示全部楼层
  1. '// CorelDRAW 窗口刷新优化和关闭
  2. Public Function BeginOpt(Optional ByVal name As String = "Undo")
  3.   EventsEnabled = False
  4.   ActiveDocument.BeginCommandGroup name
  5. ' ActiveDocument.SaveSettings
  6.   ActiveDocument.Unit = cdrMillimeter
  7.   Optimization = True
  8. ' ActiveDocument.PreserveSelection = False
  9. End Function

  10. Public Function EndOpt()
  11. ' ActiveDocument.PreserveSelection = True
  12. ' ActiveDocument.RestoreSettings
  13.   EventsEnabled = True
  14.   Optimization = False
  15.   EventsEnabled = True
  16.   ActiveDocument.ReferencePoint = cdrBottomLeft
  17.   Application.Refresh
  18.   ActiveDocument.EndCommandGroup
  19. End Function
复制代码


需要刷新 软件窗口的,可以先关闭刷新,等完成后再操作

  1.   API.BeginOpt
  2. 把你的功能放这个 优化中间
  3.   API.EndOpt
复制代码
回复 支持 反对 送花

使用道具 举报

累计签到:743 天
连续签到:15 天
 楼主| 发表于 2024-9-30 19:24:53 | 显示全部楼层
landboy 发表于 2024-9-30 18:46
需要刷新 软件窗口的,可以先关闭刷新,等完成后再操作

谢谢蘭老大的指点,非常感谢!
回复 支持 反对 送花

使用道具 举报

累计签到:281 天
连续签到:3 天
发表于 2024-9-30 20:44:39 | 显示全部楼层
这个是什么插件
回复 支持 反对 送花

使用道具 举报

累计签到:140 天
连续签到:15 天
发表于 2024-9-30 22:21:24 | 显示全部楼层
landboy 发表于 2024-9-30 18:46
需要刷新 软件窗口的,可以先关闭刷新,等完成后再操作

请教,怎么判断按鼠标左键时是否有同时按Ctrl键?
回复 支持 反对 送花

使用道具 举报

累计签到:187 天
连续签到:7 天
发表于 2024-10-1 20:55:47 | 显示全部楼层
petergh 发表于 2024-9-30 22:21
请教,怎么判断按鼠标左键时是否有同时按Ctrl键?

你可以安装我的 开源插件,开源码,一般是 一个图标三个功能, 左键 右键 按ctrl
其实最多的可以一个按钮 5个功能
回复 支持 反对 送花

使用道具 举报

累计签到:140 天
连续签到:15 天
发表于 2024-10-5 11:57:38 | 显示全部楼层
landboy 发表于 2024-10-1 20:55
你可以安装我的 开源插件,开源码,一般是 一个图标三个功能, 左键 右键 按ctrl
其实最多的可以一个按钮 ...

我查看了你发的主题贴,开源的只找到这个有关流水号的。https://www.52cnp.com/forum.php?mod=viewthread&tid=20063
可以提供你的开源插件链接吗?
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2024-11-21 18:59 , Processed in 0.019643 second(s), 29 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表