coreldraw批量插入二维码工作证照片或图片的方法
熙颐风醉清
2023年03月09日 00:01
收录于文集
共3篇

在工作中,遇到需要重复插入不同的二维码或者照片时,我们会想到偷懒,用插件,或者使用宏脚本等方法来减少重复的工作。

下面我将介绍一种使用VBA脚本来实现批量插入的方法。需根据实际情况进入代码调整哦!

最终效果展示

模板展示

前期准备步骤说明:

  1. 事先调整好需要放入的二维码或者图片大小,可通过生成二维码的平台生成相应大小的尺寸,或者在PS里面,使用动作,批量修改尺寸。

  2. 点击工具-宏-脚本(快捷键,Alt+Shift+F11)打开脚本工具栏,录制宏,拖入要插入的图片,放到相应位置上,停止录制。在我们刚录制的脚本上面,点击编辑。查看代码,找到图片插入的位置数据。

  3. 准备表格数据,使用合并打印功能,完成基础数据导入。(注意事项:因为路线编码和行道树编号是数字和英文字符,所以我们在准备数据时,标题用英文或者拼音字母命名,避免导入数据时,字体发生变化。)几十上百条数据使用合并打印功能,生成几十上百个页面。先另存为一个,避免发生故障。

  4. VBA代码分享:

代码块
JavaScript
自动换行
复制代码
Sub importmap()
'说明:此插件,针对于蒲江行道树保护公示牌,尺寸170*110,插入二维码使用。
'运用合并打印的方式,得到左侧或者右侧行道树的版面。
'运用草料二维码在线生成二维码,以行道树编号命名二维码图片。如Z0001.png,Y0001.png
'再结合其他插件,完成拼版。
'如果用于其他版面,通过录制宏的方式,得到相应插入二维码的位置参数进行修改。
'时间:




    Dim impopt As StructImportOptions
   
    Set impopt = CreateStructImportOptions
    With impopt
        .Mode = cdrImportFull
        .MaintainLayers = True
        With .ColorConversionOptions
            .SourceColorProfileList = "sRGB IEC61966-2.1,Japan Color 2001 Coated,Dot Gain 15%"
            .TargetColorProfileList = "sRGB IEC61966-2.1,Japan Color 2001 Coated,Dot Gain 15%"
        End With
    End With
    '-------------------------------------  主体代码开始  ----------------------------
    Dim PIC$, pth$, shp As Shape, picarr, p%, js, NON%, rl, mappth$
    '定义所用的变量
    '$字符串型,外型像S,所以是string,文字型 ,dim i as string
    '!单精度浮点数,1个感叹号,所以是单精度,dim i as single
    '# 双精度浮点数,二横二竖,所以是双精度,dim i as doule
    '& 长整型 外形像L的花体字,所以是Long,长整型,dim i as long
    '@ 货币型 @ = price,dim i as currency
    '% 整型  百分比符号,百来个整数,integer整数型,dim i as integer

        picarr = Array(".jpg", ".png")
        '数组集合,几种类型的格式
        
        mappth = InputBox("粘贴二维码所在文件夹路径")
        rl = InputBox("输入大写Z或者Y")
        '弹出输入框,获取路径和左右侧字母
        
        pth = mappth & "\"
        '使获取的路径,完整化,便于之后组合图片完整路径
        
        For p = 1 To ActiveDocument.Pages.Count
        '因为是用合并打印的方式创建的多页面,所以需要从第一页到最后一页,以每页页码对应每项数据
        
        If p < 10 Then
        
            js = rl & "000"
        
        ElseIf p > 9 And p < 100 Then
        
            js = rl & "00"
        
        ElseIf p > 99 Then
        
            js = rl & "0"
        
        End If
        '判断页码,使页码与二维码图片名字相匹配
        
        For x = 0 To UBound(picarr)
          '循环组合几种格式
        
        PIC = pth & js & p & picarr(x)
        '拼接成完整的二维码图片路径
        
            If Dir(PIC) <> "" Then
    
    Dim impflt As ImportFilter
    Set impflt = ActiveDocument.Pages(p).Layers("图层 1").ImportEx(PIC, cdrPNG, impopt)
    impflt.Finish
    '插入二维码进页面
    Set shp = ActiveShape
    ActiveDocument.Pages(p).Layers("图层 1").Shapes(1).Move 2.369075, 0.33539
    '再移动到相应的位置
    '以上是通过录制宏,得到插入二维码的方式和位置
    
    NON = 1
    '执行成功的判断
            End If
               
        Next x
        
        If NON <> 1 Then
        MsgBox "NO PIC", 48, "Close"
        Exit Sub
         '执行不成功提示,没有图片,或者没有找到相对应的图片,就退出程序
        End If
        
        Next p
        '循环下一页
End Sub
复制成功

请根据实际情况调整。

为了方便使用,可以把刚做好的脚本,自定义为一个工具按钮。

工具-自定义-命令-找到我们命名的脚本,设置一个标题,选择一个图标,确定。

收藏起来吧,以应不时之需!