2017-01-19 88 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