ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 885|回复: 14

[求助] 请教大哥们WORD用VBA批量插入图片的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-5 11:38 | 显示全部楼层 |阅读模式
本帖最后由 kongbu888 于 2024-4-5 17:48 编辑

Sub 插入图片到表格()
    ' 定义变量
    Dim folderPath As String
    Dim fileName As String
    Dim fileExt As String
    Dim i As Long
    Dim pic As InlineShape
    Dim table As table
    Dim rowCount As Integer
    Dim colCount As Integer
    Dim currentRow As Integer
    Dim currentCol As Integer
    Dim docPath As String

    ' 设置图片所在的文件夹路径
    folderPath = "D:\123\"

    ' 确保路径以反斜杠结束
    If Right(folderPath, 1) <> "\" Then
        folderPath = folderPath & "\"
    End If

    ' 创建或获取当前文档中的表格
    Set table = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3)

    ' 设置当前行为0,列也为0
    currentRow = 1
    currentCol = 1

    ' 打开文件夹以获取文件列表
    fileName = Dir(folderPath & "*.jpg")

    ' 遍历文件夹中的所有.jpg文件
    Do While fileName <> ""
        ' 构建文件的完整路径
        fileExt = Right(fileName, 4)

        ' 检查文件扩展名是否为图片格式
        If fileExt = ".jpg" Or fileExt = ".png" Or fileExt = ".bmp" Then
            ' 在表格的指定单元格中插入图片
            Set pic = table.Cell(currentRow, currentCol).Range.InlineShapes.AddPicture( _
                fileName:=folderPath & fileName, LinkToFile:=False, SaveWithDocument:=True, _
                Range:=table.Cell(currentRow, currentCol).Range)
        End If

        ' 更新当前列,如果到达最后一列,则移动到下一行的第一列
        currentCol = currentCol + 1

        ' 如果当前列更新后超过了表格的列数,移动到下一行的第一列
        If currentCol > table.Columns.Count Then
            currentCol = 1
            currentRow = currentRow + 1
        End If

        ' 如果当前行更新后超过了表格的行数,则退出循环
        If currentRow > table.Rows.Count Then
            Exit Do
        End If

    ' 获取下一个文件名
    fileName = Dir
Loop

' 清除文件名列表
fileName = ""
End Sub

这是AI生成的代码,修改了好多次,只能到这个效果,请问一下大哥们,这里在咋么修改呀,要求就是,一张A4纸插入15副图片,不改变表格大小,适当缩小图片,用EXCEL写人可以插入成功但打印出来效果不好,

想把图片批量插入到这个表格

想把图片批量插入到这个表格

用AI生成的插入是这样的,

用AI生成的插入是这样的,

要插入的图片

要插入的图片

3x5格模版.rar

9.64 KB, 下载次数: 6

WORD模板

3.rar

195.94 KB, 下载次数: 4

插入的图片

TA的精华主题

TA的得分主题

发表于 2024-4-5 12:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用excel的vba在word表格中插入图片的帖子回过的太多了,自己搜搜看看呗
没有相应的图片,没法测试代码正确与否,只能这么跟你说

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-5 17:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
3190496160 发表于 2024-4-5 12:36
用excel的vba在word表格中插入图片的帖子回过的太多了,自己搜搜看看呗
没有相应的图片,没法测试代码正确 ...

大哥,图片我上传了一张,其他的大小都一样的,麻烦您看一下

TA的精华主题

TA的得分主题

发表于 2024-4-5 18:35 | 显示全部楼层
亲 这个不用VBA都行  邮件合并

TA的精华主题

TA的得分主题

发表于 2024-4-5 19:50 | 显示全部楼层

Option Explicit
Sub test()
    Dim Items As FileDialogSelectedItems, vNum As Double
    Dim strPath$, i&, Pic As InlineShape
   
    With Application.FileDialog(1)
        With .Filters
            .Clear
            .Add "PIC Files", "*.png,*.jpg,*.gif"
        End With
        .Title = "请选择一个图片文件"
        .AllowMultiSelect = False
        .InitialFileName = strPath
        If .Show Then Set Items = .SelectedItems Else Exit Sub
    End With
   
    With ActiveDocument
        For Each Pic In .InlineShapes
           Pic.Delete
        Next
        With .Tables(1)
        For i = 1 To .Range.Cells.Count
            With .Range.Cells(i)
                vNum = .Height
                .Select
                With Selection
                    .Collapse
                    With .InlineShapes.AddPicture(Items(1), , True)
                        .LockAspectRatio = True
                        .Height = vNum - 13
                        .Select
                        Selection.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                    End With
                End With
            End With
        Next i
        End With
    End With
End Sub



TA的精华主题

TA的得分主题

发表于 2024-4-5 19:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请参考附件。。。

新建文件夹.rar

414.58 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-5 22:37 | 显示全部楼层
gwjkkkkk 发表于 2024-4-5 19:50
Option Explicit
Sub test()
    Dim Items As FileDialogSelectedItems, vNum As Double

谢谢大哥,这个代码可以运行,可能是我没说清楚,我一次想插入很多张,尺寸大小一样,但内容不同的图片

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-5 22:39 | 显示全部楼层
闻启学 发表于 2024-4-5 18:35
亲 这个不用VBA都行  邮件合并

大哥,请问,用邮件合并就可以插入很多张不同的图片吗???

TA的精华主题

TA的得分主题

发表于 2024-4-5 22:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
kongbu888 发表于 2024-4-5 22:37
谢谢大哥,这个代码可以运行,可能是我没说清楚,我一次想插入很多张,尺寸大小一样,但内容不同的图片

简单修改一下,你可以多选一下,按选择插入。。。

新建文件夹.rar

414.48 KB, 下载次数: 29

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-5 23:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2024-4-5 22:55
简单修改一下,你可以多选一下,按选择插入。。。

谢谢大哥~~~~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 20:28 , Processed in 0.039212 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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