簡體   English   中英

刪除另一個Excel或Word文件而不通過excel vba關閉它

[英]delete another excel or word file without closing it through excel vba

我想刪除通過VBA打開的word / excel / ppt應用程序,而不關閉該應用程序。 這是我現在嘗試運行的代碼,但是它不會刪除文件,而是轉到錯誤處理程序。

Private Sub M111_Click()
Dim WDObj As Object
Dim WDApp As Object
Dim str As String

Set WDObj = ThisWorkbook.Sheets("Tools").OLEObjects("VOC")
WDObj.Verb xlOpen

Set wordapp = CreateObject("word.Application")
Set wordap = GetObject(, "word.Application")

str = ThisWorkbook.Path & "\Voice of Customer.doc"
wordap.activedocument.SaveAs (str)
wordap.activedocument.Close

wordap.documents.Open str, ReadOnly = True

wordap.Activate

On Error GoTo ErrorHandler
With wordap.activedocument
   Kill str
   End With
Exit Sub

ErrorHandler:
Exit Sub

End Sub

在這種情況下,您的解決方案是不發送命令來關閉工作簿。 相反,您可以將工作簿的“已保存”狀態設置為true,這將繞過有關關閉未保存的書的任何消息。 注意:這不會保存工作簿; 它只是使其看起來像已保存。

ThisWorkbook.Saved = True,然后緊接着

Application.Quit

首先復制要刪除的文檔,然后關閉原件,然后刪除原件。 我想這就是您想要的,除了您創建的文檔沒有正確的名稱,並且您不能更改它的名稱而不將其保存為正確的名稱。 您可以在某種程度上使它看起來像具有application.Caption的正確名稱,然后將Application.DocumentBeforeSave和DocumentBeforeSave子項插入到單詞的文檔對象中。 (此處介紹了如何執行此操作: https//social.msdn.microsoft.com/Forums/Lync/en-US/0c3db3d4-5876-40f0-a88c-d4c0ba69e755/how-can-i-dynamic-define-subfunction -vba-for-runtime-in-vba?forum = officegeneral

復制后的對象將在復制后變為活動狀態,因此設置copyed_document = wordap.activedocument應該有助於在運行時安全地處理新創建的文件。

暫無
暫無

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

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