點擊上面的話題標籤,可以訂閱感興趣的話題,下次有更新的時候就可以第一時間收到了。
我們有時候需要從word中提取數據到excel中。
這時候一般的套路都是在excel vba中創建word應用程式實例,然後一番操作以後關閉word應用程式。
一般的結構都是形如下面這樣的:
Sub 水星Excel() '前期引用 'Dim oWord As Word.Application 'Set oWord = New Word.Application '後期引用 'Set oWord = VBA.CreateObject("Word.Application") Dim oDoc Set oDoc = oWord.Documents.Open(sPath & "\abc.doc") '*********** '接下來是一段word數據的提取操作 '*********** '關閉打開的文檔 oDoc.Close (False) '退出Word應用程式 oWord.QuitEnd Sub這裡會有個問題,就是最後的 oWord.Quit 好像是把word應用程式關閉了,但是事實上往往經常是關閉不成功的,如果打開系統任務管理器,會發現實際上word.exe進程仍然存在。
這樣就會出現當再次運行這個代碼時,出現重新加載word應用程式時卡頓的情況,導致代碼長時間不響應。
這裡介紹一段代碼放在上面的結構的最後,可以強制的關閉任何存在的word.exe進程,從而掃清障礙。
代碼如下:
Sub 水星Excel() Dim sCmd As String '強制關閉word進程 sCmd = "cmd /c Taskkill /im winword.exe /f /t" Shell sCmdEnd Sub
上述代碼的意思是用dos 命令 taskkill 強制關閉word進程。
關於在vba中使用dos命令可以看往期文章用VBA執行DOS命令
在看和轉發分享就是最大的支持