簡體   English   中英

Excel VBA復制粘貼形狀並另存為1004錯誤

[英]excel vba copy-paste a shape and saveas 1004 error

保存工作簿(wbk_New)時,我遇到了1004運行時錯誤,在該工作簿中我從另一個工作簿(wbk_Old)復制粘貼了一組形狀。 我應該告訴您,來自wbk_Old的宏已分配給該組。

wbk_Old.Worksheets("DashBoard").Activate
ChartTop = ActiveSheet.Shapes("Group_VesselGraphics").Top
ChartLeft = ActiveSheet.Shapes("Group_VesselGraphics").Left
ActiveSheet.Shapes("Group_VesselGraphics").OnAction = ""
ActiveSheet.Shapes("Group_VesselGraphics").Copy

wbk_New.Worksheets("DashBoard").Activate
ActiveSheet.Shapes("Group_VesselGraphics").Delete
ActiveSheet.Paste
ActiveSheet.Shapes("Group_VesselGraphics").Top = ChartTop
ActiveSheet.Shapes("Group_VesselGraphics").Left = ChartLeft
ActiveSheet.Shapes("Group_VesselGraphics").OnAction = "'" & ActiveWorkbook.Name & "'!UpdateShipGraph"

wbk_Old.Close
wbk_New.SaveAs As path_Old

我不知道是什么原因導致此錯誤...是否有人已經遇到此問題?

多謝您的幫助!

(我忘了說圖表也屬於這組形狀!)

好的,我不明白為什么,但是盡管我斷開了所有鏈接並更新了圖表以引用內部數據,但似乎在“ wbk_New”和“ wbk_Old”之間仍然存在某些鏈接。 因此,無法正確執行“ wbk_Old”的關閉並且wbk_New損壞,因此無法保存它。

我發現要解決此問題的唯一方法是先保存wbk_New,然后關閉wbk_Old,然后調用外部進程,將其用wbk_New替換wbk_Old,使用4s的延遲,並在延遲完成之前關閉wbk_New和Old 。 我必須承認,這是一個丑陋的解決方案,如果有人知道更好的方法,那么最好將其共享!

以下是我的解決方案的代碼,其中BatchCmd創建命令的批處理文件並將其外殼:

{code above}
wbk_New.Save
cmd = "ping -n 4 127.0.0.1 >nul" + vbCrLf
cmd = cmd + "move /Y " & path_New & " " & path_Old
Call BatchCmd(cmd, status:=vbHide)
wbk_Old.Close
wbk_New.Close

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM