Foxtable(狐表)用户栏目专家坐堂 → [求助]如何用代码更换Word文件中的图片


  共有2763人关注过本帖树形打印复制链接

主题:[求助]如何用代码更换Word文件中的图片

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 17:33:00 [显示全部帖子]

不要提前插入图片,需要的时候再添加图片,参考:http://www.foxtable.com/webhelp/topics/2890.htm

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 20:04:00 [显示全部帖子]

文字下方添加占位符,直接替换即可:

ReplaceWithImage方法,将指定的内容替换为图片,语法:

ReplaceWithImage(findstr,imagefile,width,height)

findstr: 字符型,指定要查找的内容
imgefile:字符型,用于替换的图片文件
width: 整数型,指定图片宽度
height:整数型,指定图片高度

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 20:47:00 [显示全部帖子]

这种要按水印的方式添加,要使用vba:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=90243

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/21 22:21:00 [显示全部帖子]

Dim app As New MSWord.Application
try
    Dim fileName = "D:\问题\temp\变电所命名及开关柜编号.docx"
    Dim doc As object = app.Documents.Open(fileName)
    
    Dim img = "D:\问题\temp\背景2.jpg" '图片路径
    
    Dim Top As Integer = 0
    Dim left As Integer = 0
    Dim w As Integer = 0
    Dim h As Integer = 0
    
    For Each a As object In doc.Shapes
        Top = a.Top
        left  = a.left
        w = a.width
        h=a.height
        Output.Show(a.Top)
        Output.Show(a.left)
        a.delete
    Next
    
    Dim s = doc.Shapes.AddPicture(img, False, True,Top ,left ,w,h)
    s.WrapFormat.Type = MSWord.WdWrapType.wdWrapBehind
    Doc.save
catch ex As exception
    msgbox(ex.message)
finally
    app.Quit
End try

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/22 9:17:00 [显示全部帖子]

word里面的图片是没有什么标记的,没有办法知道那个图片是需要换掉的。9楼的代码只针对一个图片的情况。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/22 10:15:00 [显示全部帖子]

图片是有名称的,不过没找到怎么在word里改这个名称,下面代码位置就对了

Dim app As New MSWord.Application
try
    Dim fileName = "e:\问题\temp\变电所命名及开关柜编号.docx"
    Dim doc As object = app.Documents.Open(fileName)
    
    Dim img = "e:\问题\temp\背景2.jpg" '图片路径
    
    Dim Top As Integer = 0
    Dim left As Integer = 0
    Dim w As Integer = 0
    Dim h As Integer = 0
    
    For Each a As object In doc.Shapes
        a.RelativeVerticalPosition = MSWord.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage
        Top = a.Top  - Doc.pagesetup.topmargin
        left  = a.left
        w = a.width
        h=a.height
        Output.Show(a.name)
        Output.Show(Top )
        Output.Show(left  )
        If a.name = "Picture 3"
            a.delete
            Dim s = doc.Shapes.AddPicture(img, False, True, left ,Top ,w,h)
            s.WrapFormat.Type = MSWord.WdWrapType.wdWrapBehind
        End If
    Next
    
    app.visible = True
    ‘Doc.save
catch ex As exception
    msgbox(ex.message)
    app.Quit
finally
    'app.Quit
End try

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/22 11:57:00 [显示全部帖子]

没有办法判断哪个是最后添加的图片,只能判断是第几张图片。看懂上面的代码,灵活改动一下

 回到顶部