吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1433|回复: 26
收起左侧

[其他原创] vba,word根据图片及图片名,生成表单

[复制链接]
etkane 发表于 2024-4-2 22:41
为了工作方便,写了一个根据相片名称,自动生成表单的工具。

工具是office word 里面自带的vba。wps应该也正常使用。

原理是,很多相片,需要生成一张张表单,看相片改名字比较方便,于是借鉴网络代码加自己改造出来下列代码。

需要在word里,打开开发工具,然后用宏或者virtual basic里插入模块,复制下列代码,然后F5或者点运行,根据提示操作即可。

图片名称以 - 分割,代码会逐行填入内容。需要改的地方都有注释了,自己尝试,不明白可以跟帖问一下。

生成表格效果,行列均可改,列数对话框输入即可。
image.png
图片原文件文件名实例(也可以随便改)
image.png




[Visual Basic] 纯文本查看 复制代码
Sub imgTbl()
        currentDate = Date
    
    ' 将当前日期作为文本插入到光标位置
    'Selection.TypeText Text:=currentDate & " "
    
    Selection.TypeText Text:="问题整改通知与记录,编制日期:" & currentDate
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Dim nrr
    If ActiveDocument.Tables.Count = 1 Then '删除上次数据
        ActiveDocument.Tables(1).Delete
    End If
    '//获取文件夹,存入数组
    Dim kr()
    Set fso = CreateObject("scripting.filesystemobject")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then PathSht = .SelectedItems(1) Else Exit Sub
    End With
    
    Dim imgPaths()  '图片路径数组
    picname = Dir(PathSht & "\*.*")
    Do While picname <> "" 'Do While循环
        i = i + 1
        imgpath = PathSht + "\" + picname
        picname = Dir    ' 查找下一个图片
        ReDim Preserve imgPaths(1 To i)
        imgPaths(i) = imgpath
        'Debug.Print (imgpath)
        
    Loop
    
    imgnum = UBound(imgPaths) + 1
    
    Dim value '弹出输入框,输入列数,默认10,会自动计算行数
    value = InputBox("请输入表格列数", "表格列数", "10")
    'Debug.Print value
    
    tbl_columnNum = value
    tbl_rowNum = (Int(imgnum / tbl_columnNum)) * 8
    
    '//开始新建表格
    Dim tbl As Table
    Set tbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=tbl_rowNum, NumColumns:=tbl_columnNum)
    '新建表格
    tbl.Style = "网格型"
    Set tbl = ActiveDocument.Tables(1)
    tbl.Rows.Height = 20
    'tbl.Columns(1).Width = 1.27 * 28.35 '设置表格各列的列宽
    'tbl.Columns(2).Width = 2.13 * 28.35
    'tbl.Columns(3).Width = 3.3 * 28.35
    'tbl.Rows(1).Height = 2.13 * 28.35 '设置表格各列的列宽
    tbl.Rows.Alignment = wdAlignRowCenter '居中对齐
    tbl.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter '文字垂直居中
    'tbl.Range.HorizontalInVertical = xlHAlignCenter '文字水平居中
    'tbl.Range.Rows.Alignment = wdAlignRowCenter
    tbl.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft '文字水平居中
    tbl.Range.Font.Size = 10
 
    
        
    '//开始插入图片
    For i = 1 To tbl_rowNum
    '对Word中的表格中的行进行循环。
        For j = 1 To tbl_columnNum
        '对Word中的表格中的列进行循环。
            fod_index = fod_index + 1
            If fod_index >= imgnum Then ' 超过图片数量,退出循环
                Exit For
            End If
            imgpath = imgPaths(fod_index) '图片路径
            srr = Split(imgpath, "\")
            FullName = srr(UBound(srr))
            nrr = Split(FullName, ".")
            picname = nrr(0)
             nrr = Split(nrr(0), "-")
             
            ReDim Preserve nrr(0 To 6)
            'tbl.Cell(i, j).Range.Text = nrr(0) '单元格文字图片名称不带后缀
            'tbl.Cell(i, j).Range.Text = "OK"
            nrr(3) = picname
             nrr(4) = " "
              nrr(5) = " "
               nrr(6) = " "
 
            
            
            
            tbl.Cell(i * 8 - 7, j).Range.Select '选择当前单元格
            Dim shp As InlineShape
            Set shp = Selection.Range.InlineShapes.AddPicture(FileName:=imgpath) '插入图片
            Selection.EndKey wdLine
            'tbl.Cell(i * 5, j).Range.Select '选择当前单元格 '选中该单元格,为了下一步光标定位到单元格内部
            bt = Array("问题描述:", "责任单位:", "需整改完成时间:", "图片名称:", "实际完成时间:", "整改自检人及时间:", "验证人及验证时间:")
            For m = 0 To 6
          
            tbl.Cell((i - 1) * 8 + m + 2, j).Range.Select
            Selection.EndKey wdLine
            Selection.TypeText bt(m) & nrr(m)
            
            Next m
            
            
            
'            tbl.Cell(i * 5 - 3, j).Range.Select
'            Selection.EndKey wdLine
'            Selection.TypeText "问题描述:" & nrr(0)    '单元格文字图片名称不带后缀
'            tbl.Cell(i * 5 - 2, j).Range.Select
'            Selection.EndKey wdLine
'            Selection.TypeText "责任单位:" & nrr(1)    '单元格文字图片名称不带后缀
'            tbl.Cell(i * 5 - 1, j).Range.Select
'            Selection.EndKey wdLine
'            Selection.TypeText "整改时间:" & nrr(2)    '单元格文字图片名称不带后缀
'            tbl.Cell(i * 5, j).Range.Select
'            Selection.EndKey wdLine
            'Selection.TypeText "整改完成时间及验证人签字:" & nrr(4)   '单元格文字图片名称不带后缀
        Next
    Next
     
  
    For t = 1 To Int(imgnum / 2) - 1
    
    Set tbl = ActiveDocument.Tables(t) '将第一个表格赋值给变量tbl
    
    If Not IsNull(tbl) Then '如果存在表格
        tbl.Rows(9).Select '选择第二行(索引从1开始)
        
    
    Selection.SplitTable
    Selection.InsertBreak Type:=wdPageBreak
     Selection.TypeText Text:="问题整改通知与记录,编制日期:" & currentDate
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    'Selection.MoveDown Unit:=wdLine, Count:=1
    Else
        MsgBox "当前文档没有任何表格。"
    End If
    
    Next t
    

     Selection.HomeKey Unit:=wdStory
    MsgBox "完成!"
End Sub
 
 
Function getfol()
'该函数的作用:弹出对话框提示用户选择文件夹,并且返回该文件夹路径。
'如果用户选择了取消,则返回空值
    Dim PathSht As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            PathSht = .SelectedItems(1)
        Else
            PathSht = ""
            Exit Function
        End With
        getfol = PathSht & IIf(Right(PathSht, 1) = "\", "", "\")
End Function

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hellen999 发表于 2024-4-3 08:51
试运行时,提示如下,怎么回事?

[贴图错误,请阅读“贴图帮助”。/png;base64,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[/img]
zhaoxuanjun 发表于 2024-4-3 08:55
我自己建了一个文件夹 里面有图片2张,在一个空白word中把代码复制后按F5,出错 end with 没有with
cxx0515 发表于 2024-4-2 22:52
jgn3odl2 发表于 2024-4-2 22:54
&#128002;&#127866;
雾都孤尔 发表于 2024-4-2 23:00
能派上用场,支持原创。感谢分享。
soulpqpq 发表于 2024-4-2 23:12
太酷了!谢谢
yingqiangpai 发表于 2024-4-2 23:28
能派上用场的好内容,支持原创,感谢你的无私分享。
sxzswx 发表于 2024-4-3 05:13
独特的原创
nect 发表于 2024-4-3 07:43
很棒的,正好项目中有此需求,借鉴一下
Lty20000423 发表于 2024-4-3 07:46
非常支持,赞一个
tyq2003 发表于 2024-4-3 08:12
不说不知道,学习了。谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 08:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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