2017-01-19 143 views
0

我有一个奇怪的问题。我以前每天都没有几份报告。VBA替换Excel文件中的徽标

所有这些都在Excel中,并在每个文件的所有表中都有公司的标识。

但是,现在公司名称已更改,因此需要更换新徽标以代替现有徽标。希望检查这个替换是否可以用VBA完成。

我试着用application.shapes方法。但是,让人感到困惑的是要继续前进。

+3

尝试记录做自己然后看看生成的代码。 –

+0

每张纸上有多少个形状?您是否在所有出现的地方将该徽标命名为相同? –

+0

嗨Sha ...我有一个标志......它被粘贴在报告的所有表格中。每份报告都有多张从2张到10张不等的单张。谢谢 – user3228901

回答

2

试试这个....

Sub ChangePicture(strNewPath As String) 

Dim oOld As Picture 
Dim oNew As Picture 

Set oOld = ActiveSheet.Pictures(1) 
Set oNew = ActiveSheet.Pictures.Insert(strNewPath) 

oNew.Left = oOld.Left 
oNew.Top = oOld.Top 
oNew.Width = oOld.Width 
oNew.Height = oOld.Height 

oOld.Delete 

End Sub 
+0

嗨内森,感谢这个美好的计划。它的工作正常。但是,如果同一工作簿中有多个工作表,我是否需要使用for循环?另外,如果工作表不包含徽标? – user3228901

+0

显式的选项 公共MyFile的作为字符串 公共停止由于布尔 副主() 停止=假 UserForm1.Show(vbamodless) 如果停止然后退出子 MSGBOX MyFile的 呼叫ChangePicture “等等 结束子 子ChangePicture() 昏暗oOld图片与 昏暗ONEW图片与 昏暗WS作为工作表 对于每个WS在Application.ActiveWorkbook 集oOld = ActiveSheet.Pictures(1) 集ONEW = ActiveSheet.Pictures.Insert(文件路径) oNew.Left = oOld.Left oNew.Top = oOld.Top oNew.Width = oOld.Width oNew.Height = oOld.Height oOld.Delete 下一页ws End Sub – user3228901

+0

上述代码已根据您提供的程序进行了更新。我想检查每张纸上是否存在徽标,然后用新的徽标替换。但上面的代码仅适用于工作簿的第一个工作表 – user3228901