VBA代碼大全030:用vba強制關閉word應用程式

2021-03-05 水星Excel

點擊上面的話題標籤,可以訂閱感興趣的話題,下次有更新的時候就可以第一時間收到了。

我們有時候需要從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命令

在看和轉發分享就是最大的支持

相關焦點

  • Word與Excel用VBA交互(二)-批量生成檔案
    昨天和小夥伴們分享了用VBA把Excel的內容寫入到Word的表格中,生成一個一個Word的方法今天和小夥伴們分享用VBA
  • 一個小技巧,認識Word中的VBA
    Word是一個很強大的東西,從字符錄入到文檔排版,無所不能,甚至可以在word中嵌入Excel表格等程序功能。但是現在已經有的word功能似乎有點滿足不了我們的特別需求。比如:在word文檔中輸入一個中文日期,而且是今天的日期,如:二○一八年三月九日,輸入這個日期你至少要輸入N多個字符來完成。
  • excel VBA是什麼?VBA編程入門教程
    原來需要自己添加),然後在代碼選項卡中點擊【Visual Basic】 即可,如下圖所示:打開vba編輯器圖1方法2:右擊excel左下角【Sheet1】,在彈出的菜單中點擊【查看代碼】即可,如下圖所示:
  • VBA代碼大全010:用vba遍歷文件夾及其子文件夾內的文件
    vba老手都知道,vba寫多了,其實都是在做循環。循環處理多個單元格的內容,循環處理多個工作表的內容,循環處理多個工作簿的內容。
  • Excel VBA常用代碼!
    前兩天有兩位朋友留言想收集一些VBA的常用代碼,今天開始會陸續分享一些!記得收藏好哦,因為今後你應用到稍大型Excel VBA程序時,這其中某些代碼肯定會用到。來看看都是哪些常用代碼:下面先舉一個簡單的例子:場景再現:在當前的工作表中插入一張e盤中名為1.jpg的圖片(長350、高300,距離Excel左側90、上邊框230)操作方法:第一步,打開vba代碼區
  • Excel vba 無邊框窗體,如何實現
    文/江覓易見Excel vba製作無邊框是一個特殊的需求,有些時候,在一些功能上需要運用到沒有標題欄的窗體,沒有最大化、最小化和關閉功能按鈕。這就需要做一個無邊框的窗體。運行效果如下(這不僅僅是一張圖片,而是背景是一張圖片的Form窗體)無題欄窗體是一種比較特殊的窗體,由於比較另類,一般用到程序開始展示過渡或者一些過程提示方面應用。當然了,也可出做一些個性的界面功能來,那就看自己喜好了 。
  • vba第十八課
    vba第十八課調用工作表函數在vba中我經常會對工作表的數據進行一些運算,雖然通過代碼進行循環或判斷也可以完成,但是通vba調用函數可以更簡單更直接進行運算提高代碼的運行效率,比如countif、sumif等需要進行判斷統計和求和的運算。
  • 在Excel中執行我們的Access,你或許可以使用VBA來完成自動化
    Excel我們都知道基礎的操作,可是你是否知道我們Excel還可以操作其他的程序來完成我們的自動化任務,比如用Excel操作我們的Access,word,ppT,Outlook,或者其他的應用程式,以便達到我們想要的功能。
  • VBA編程理論學習之談
    No.1 掌握對象方法和屬性VBA編程是一個即學即用的過程,幾乎不可能全面掌握所有對象的代碼,也不可能記住所有的對象屬性。有些是解決基本應用需求,也有一些是Excel vba基礎的對象以及屬性功能介紹。總的來說,這個月有一些進展,也有一些心得和知識積累。有幾篇比較不錯的文章持續得到展示和瀏覽,說明這方面還是做到了大多數關注。
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    本系列一直強調要善用各種工具,作為本系列的最後一節,那麼這次就用一例子說明如何讓Python結合Vba,直接在Excel中動態獲取各種處理條件,輸出結果。日後也會不定期分享 pandas 的處理案例,但不一定非要與 Excel 掛鈎。比如直接結合 power bi 做處理分析。
  • 讓Word來做二傳手!——VBA讀取PDF表格的「旁門」技巧
    而我們在《全民一起VBA 提高篇》中又講過,Excel VBA 中可以創建Word應用、並控制它去打開文件,所以一條線索就非常清晰了: (1) 在Excel中編寫VBA程序 (2) 在程序中創建Word對象(3) 讓Word對象讀取PDF文件(4) 讓Word對象把讀到的內容複製一下(5) 讓Excel單元表對象執行粘貼操作
  • 如何將Excel數據表單元格保存為數組,VBA數組進階應用
    No.1在vba編程中,數組應用是一個十分有用的方法。如何把數據表作為數組進行處理,是編程過程中的一個重要技能。學會之後,將大大提高編程技術,也將使數據處理的過程變得更加流暢。No.2上圖為例,把表格內容作為數組值進行保存,然後通過流程編碼對成績進行一個比較判斷,最終得出一個成績等級的判定。
  • vba第二十一課
    vba第二十一課工作薄運用實例在一些跨工作薄的數據調取數據或多個工作薄中循環調取數據,那麼我們就要熟練掌握工作薄的代碼的書寫,只要運行程序就可以獲得數據,下面看一段代碼例:Dim wk As Workbook
  • 運用Excel-vba合併工作表數據
    1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。2.輸入代碼:雙擊"ThisWorkbook",在代碼窗口中輸入以下代碼:Sub 合併當前工作簿下的所有工作表()Dim ws As WorksheetDim sh As Worksheet, i%
  • vba字典功能介紹,Excel辦公效率就這麼高
    vba字典功能十分有用,如果對其它編程有一定了解,那麼對於字典也不陌生,它代表著高效和強大的數據處理功能。字典功能介紹那麼如何在vba中運用字典功能?as Object之後就可以用DicObj這個東西了,這就是字典。
  • Excel VBA入門教程1.1 數據和數據類型
    類似的要使用vba,也要入鄉隨俗,了解他的構成,簡單的說vba包含數據類型、 變量/常量、對象和常用的語句結構。不過呢在量和複雜度上遠低於英語,不用那麼痛苦的記單詞了,所以vba其實很簡單的。熟悉了規則之後剩下就是查官方函數啦,查Excel提供的可操作對象啦。順帶一提的是,函數其實也很容易理解,方便使用。
  • vba編程常用英文單詞100個
    vba編程常用英文單詞100個大家好,部分朋友在公眾號留言,建議把vba
  • Excel vba 利用定義名稱實現用戶登錄功能
    文/江覓易見在vba 中實現用戶登錄,並對登錄用戶進行身份識別,然後對用戶進行分組管理,此類功能值得進一步思考。這裡介紹一種方法,利用Excel中的名稱管理來進行身份識別,起到用戶登錄次數以及增減用戶的功能。
  • 如何用VBA代碼添加Form窗體表單,看完全明了,詳細講解
    本節將介紹一下,使用vba代碼添加窗體,然後在窗體上添加控制項,如標籤按鈕等等方法。NO.2vba中 VBComponents集合裡包含了模塊、窗體、類模塊。新建表單後,運行程序什麼也看不到,還需要對表單進行屬性設置。這就是像是蓋一棟大樓,只是做了大樓的一個工程設計,僅僅是立項要蓋這棟大樓,而沒有真正實施蓋樓的過程。所以,名義上的新建了這棟樓,但其並沒有變成實際意義上的大樓。
  • 如何替換單元格內容,vba代碼幫你一步解決
    No.2下面用一個例子來簡單說明一下。本著解決問題的目的,利用一個查找姓名並更改的功能,做了如下表格。可以看到上圖,有一個按鈕控制項,一個文本框控制項,下面是個人信息表 。單擊按鈕執行查找姓名,並更改為文本框內容。這處把所有的姓名全改為文本框內容了,為了更好地表達編程意圖,這麼做也了,當然,在實際應用中只能改一個。