word vba 插入图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了word vba 插入图片相关的知识,希望对你有一定的参考价值。

怎么想往word中批量插入图片 并改变大小和指定图片的位置

Sub 批量插入图片()
Dim myfile As FileDialog
Set myfile = Application.FileDialog(msoFileDialogFilePicker)
With myfile
.InitialFileName = "E:\\工作文件" ‘这里输入你要插入图片的目标文件夹
If .Show = -1 Then
For Each Fn In .SelectedItems
Selection.Text = Basename(Fn) \'这两句移到这里
Selection.EndKey
If Selection.Start = ActiveDocument.Content.End - 1 Then \'如光标在文末
Selection.TypeParagraph \'在文末添加一空段
Else
Selection.MoveDown
End If
Set MyPic = Selection.InlineShapes.AddPicture(FileName:=Fn, SaveWithDocument:=True) \'按比例调整相片尺寸
WidthNum = MyPic.Width
c = 6 \'在此处修改相片宽,单位厘米
MyPic.Width = c * 28.35
MyPic.Height = (c * 28.35 / WidthNum) * MyPic.Height
If Selection.Start = ActiveDocument.Content.End - 1 Then \'如光标在文末
Selection.TypeParagraph \'在文末添加一空段
Else
Selection.MoveDown
End If
Next Fn
Else
End If
End With
Set myfile = Nothing
End Sub
Function Basename(FullPath) \'取得文件名
Dim x, y
Dim tmpstring
tmpstring = FullPath
x = Len(FullPath)
For y = x To 1 Step -1
If Mid(FullPath, y, 1) = "\\" Or _
Mid(FullPath, y, 1) = ":" Or _
Mid(FullPath, y, 1) = "/" Then
tmpstring = Mid(FullPath, y + 1)
Exit For
End If
Next
Basename = Left(tmpstring, Len(tmpstring) - 4)
End Function
执行此代码后,弹出的选择对话框, 全选目标文件夹下的所有图片文件之后,点击确定。然后静静的等待电脑完成处理工作,次数word会进入无响应状态。图片越多,无响应的时间越长。
参考技术A

最简单办法是录制宏,然后从菜单从硬盘指定一个图片文件插入,然后修改大小,结束录制代码会包括图片路径。

然后通过循环重复这一过程

大致代码

Dim i%, Files() As String
Files = Array("c:\\1.jpg", "c:\\2.jpg") '....定义你的图片文件路径
For i = 0 To UBound(Files)
    '复制你的宏代码到这里,并修改文件名为Files(i)
    '视情况每插入一图片后回车 开始新的段落
    Selection.TypeParagraph
Next

本回答被提问者和网友采纳
参考技术B 建议你这么做,录制个宏脚本,插入一个图片,设置位置什么的。然后依葫芦画瓢,修改下宏脚本就行了 参考技术C InlineShapes.AddPicture可以插入图片,其它不记得了。追问

这个录制宏都知道

Word 利用 VBA 批量设置图片格式

Word 利用 VBA 批量设置图片格式

批量设置图片格式

Sub setShapeStyle()  
    On Error Resume Next  
    Dim myShape As InlineShape
    
    ' 如果没有名叫“图片”的样式,提示用户创建
    Dim imgStyle As Style, imgStyleName As String
    imgStyleName = "图片"
    Set imgStyle = ActiveDocument.Styles(imgStyleName)
    If imgStyle Is Nothing Then
        MsgBox "请先创建样式【" & imgStyleName & "】"
        Exit Sub
    End If
    
    '关闭屏幕更新,提升执行效率
    Application.ScreenUpdating = False
    
    '遍历所有嵌入式图片
    For Each myShape In ActiveDocument.InlineShapes
        
        With myShape
            ' -------- 设置边框 --------
            .Borders.OutsideLineStyle = wdLineStyleSingle '边框类型
            .Borders.OutsideColorIndex = wdBlack '边框颜色
            .Borders.OutsideLineWidth = wdLineWidth100pt '边框粗细
            ' -------- 设置样式 --------
            If .Type = wdInlineShapePicture Then
                .Range.Style = imgStyleName  '设置图片样式为“图片”
            End If
            ' -------- 设置高宽 --------
            .ScaleWidth = 100  ' 缩放重置为100%
            .ScaleHeight = 100 ' 缩放重置为100%
            .LockAspectRatio = msoTrue  ' 锁定纵横比
            '.Height = 600 ' 600点
            '.Width = CentimetersToPoints(15) '15 CM
            .Width = ThisDocument.PageSetup.TextColumns.Width ' 当前文档宽度
            ' -------- 图片下方插入题注 --------
            .Range.InsertCaption Label:="图:", TitleAutoText:="", Title:="", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
        End With
        
    Next
    
    '开启屏幕更新
    Application.ScreenUpdating = True

End Sub

转为嵌入式图形

网上抄来改了一下:

Sub ConvertToInlineShape()
    Dim total, count
    count = 0
    total = 0
    For Each myShape In ActiveDocument.Shapes
        If myShape.Type = msoPicture Then
            ' 转换为嵌入式图片
            myShape.ConvertToInlineShape
            count = count + 1
        End If
        total = total + 1
    Next myShape
    
    MsgBox "转换【" & count & "/" & total & "】个图片!"
    
End Sub

参考资料

微软Docs 》Office VBA 参考 》Word 》对象模型 》Style 对象
Docs 》Office VBA 参考 》Word 》对象模型 》Range 对象 》方法 》插入题注InsertCaption
WdLineWidth 枚举

Docs》Office》VBA》参考》Word》对象模型》InlineShape》对象》方法》Reset

VBA操作WORD(五)批量调整图片大小、居中设置

以上是关于word vba 插入图片的主要内容,如果未能解决你的问题,请参考以下文章

寻找WORD VBA高手解决WORD批量插入图片程序的问题

Word中用VBA插入一个文件夹里的所有.jpg图片

利用VBA如何将批量图片导入WORD的指定表格格式里?

利用VBA如何将批量图片导入WORD的指定表格格式里?

word用vba批量导入图片文件时,怎样保留图片原有大小,而不是统一固定大小?跪谢!下为您原来提供的代码

vba如何写word