Foxtable(狐表)用户栏目专家坐堂 → 如何用VBA实现Excel查找字符替换为图片


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

主题:如何用VBA实现Excel查找字符替换为图片

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


加好友 发短信
等级:三尾狐 帖子:781 积分:8910 威望:0 精华:0 注册:2017/1/26 14:38:00
如何用VBA实现Excel查找字符替换为图片  发帖心情 Post By:2020/4/23 11:46:00 [只看该作者]

如题,想用VBA查找excel的特定字符,然后替换为图片,如何实现?

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/23 12:13:00 [只看该作者]

Dim App As New MSExcel.Application
try
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\问题\abc.xlsx")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)'指定工作表
    Dim range = ws.UsedRange
    Dim rgFound = range.Find("要查找的字符")
    Output.Show(rgFound.Address)
    App.quit
catch ex As exception
    Output.Show(ex.message)
    App.quit
End try

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


加好友 发短信
等级:三尾狐 帖子:781 积分:8910 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2020/4/23 12:22:00 [只看该作者]

这个我知道的,后面呢,如何插入图片呢?

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/23 13:43:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=147456&replyID=61001&skin=1

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


加好友 发短信
等级:三尾狐 帖子:781 积分:8910 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2020/4/23 20:02:00 [只看该作者]

可以插入,但还有个问题,重复执行的时候,会重复添加叠加图片。现在希望第二次执行的时候,会把第一张图片覆盖,而不是叠加到第一张图片上,如何实现。我试了用Rg.Clear,但没有效果。

Dim fl As String = "C:\Users\Administrator\Desktop\新建 Microsoft Office Excel 工作表.xlsx"
Dim pic As String = "C:\Users\Administrator\Desktop\logo.png"

Dim App As New MSExcel.Application
try
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range = Ws.UsedRange
    Rg = ws.Cells.Find(What:="图片")
    Rg = Rg.offset(0,1)
    Rg.Clear
    ws.Shapes.AddPicture(pic, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,Rg.left, Rg.Top, 120, 30)
    Wb.Save
    app.quit
catch ex As exception
    msgbox(ex.message)
    app.quit
End try

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/23 20:39:00 [只看该作者]

试试
……
    Rg = ws.Cells.Find(What:="图片")
    Rg = Rg.offset(0,1)
    Rg.Clear
For Each shp In ws.Shapes
If shp.TopLeftCell.Address = Rg.Address Then
shp.delete
endif
Next
    ws.Shapes.AddPicture........

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


加好友 发短信
等级:三尾狐 帖子:781 积分:8910 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2020/4/23 20:52:00 [只看该作者]

提示错误

图片点击可在新窗口打开查看此主题相关图片如下:提示错误.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/23 21:21:00 [只看该作者]

For Each shp as object In ws.Shapes

 回到顶部