多语言展示
当前在线:245今日阅读:167今日分享:16

利用vba来快速以表格形式插入图片名+图片

word中如何以表格形式插入图片,下面是文件名?可以使用邮件合并。但是每次都手动去点很多步,还要借助于Excel,比较麻烦。利用vba来完成确是一件轻松而又愉快的事。
工具/原料
1

word

2

vba

方法/步骤
1

打开Word,注意不是wps。

2

将下面代码粘贴进去:Sub 每行插入表格n个图()        On Error Resume Next    Application.ScreenUpdating = False    Dim D As FileDialog, a, p As InlineShape, t As Table    If Selection.Information(wdWithInTable) = True Then MsgBox '请将光标置于表格之外!': Exit Sub    With Application.FileDialog(msoFileDialogFilePicker)        '        .InitialFileName = 'D:\'        .Title = '请选择...'        If .Show = -1 Then            n = InputBox('请输入表格的列数:', '列数', 3)            mc = InputBox('是否同时插入名称?', '名称', 1)            m = .SelectedItems.Count            Debug.Print '共有' & m & '个图片'; m            '        If m / n <> Int(m / n) Then            '        h = 2 * (Int(m / n) + 1)            '        Else: h = 2 * m            '        End If            If mc = 1 Then            h = IIf(m / n = Int(m / n), 2 * m / n, 2 * (Int(m / n) + 1))            Else            h = IIf(m / n = Int(m / n), m / n, (Int(m / n) + 1))            End If            '   Debug.Print h, m            Set t = ActiveDocument.Tables.Add(Selection.Range, h, n)            t.Borders.Enable = True            '        t.Borders.InsideColor = wdColorBlue            '        t.Borders.OutsideColor = wdColorRed            t.Borders.OutsideLineStyle = wdLineStyleDouble            For Each a In .SelectedItems                Set p = Selection.InlineShapes.AddPicture(FileName:=a, SaveWithDocument:=True)                With p                    W = .Width                    .Width = Int(410 / n)                    .Height = .Width * .Height / W                End With                i = i + 1                If mc = 1 Then                b = Split(a, '\')(UBound(Split(a, '\')))    '或修改成b.name                c = Split(b, '.')(0)                Selection.MoveLeft wdCharacter, 1 '光标移到到图片左边                Selection.MoveDown wdLine, 1 '光标下移到下面的单元格                Selection.TypeText c '键入文件名                Selection.Cells(1).Select                Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter    '决定了首行居中                Selection.HomeKey                Selection.MoveDown wdLine, -1 '光标上移                Selection.MoveRight wdCharacter, 2 '光标右移两个单元,到右边单元格                Else                Selection.MoveRight wdCharacter, 1 '光标右移两个单元,到右边单元格                End If                Debug.Print i, n'                If i = Val(n) And mc = 1 Then '不可这样写,会跳过单元格                 If i = Val(n) Then                        If mc = 1 Then                        Selection.MoveRight wdCharacter, 1                        Selection.Cells(1).Select                        Selection.EndKey                        Selection.MoveDown wdLine, 1                        i = 0                    Else                         Selection.MoveRight wdCharacter, 1                         i = 0                    End If                End If            Next        End If    End With    Application.ScreenUpdating = True    If Err.Number <> 0 Then MsgBox '中间有错误产生!'End Sub

3

图片示意:

4

按F5运行,于是会弹出图片选择的窗口:

5

选择要显示几列表格,以及是否要显示图片名称:

6

最终效果:

注意事项

方便期间,可以自己添加个快捷按钮。可搜索本人其他经验==>如何为自定义宏添加按钮?

推荐信息