返回列表 上一主題 發帖

[發問] 刪除指定資料夾中所有巨集

回復 1# PJChen
參考用程式寫程式 (VBProject / VBComponents)
  1. Sub Try()
  2. fd = ThisWorkbook.Path & "\" & Sheets(1).[E6] & "\"
  3. fs = Dir(fd & "*.xlsm")
  4. Do Until fs = ""
  5. With Workbooks.Open(fd & fs)
  6. For Each vbc In .VBProject.VBComponents
  7.   Select Case vbc.Type
  8.   Case vbext_rk_Project, vbext_wt_Browser, vbext_ct_MSForm '註
  9.     .VBProject.VBComponents.Remove .Item(vbc.Name)

  10.   Case Else
  11.     .VBProject.VBComponents(vbc.Name).CodeModule.DeleteLines 1, _
  12.     .VBProject.VBComponents(vbc.Name).CodeModule.CountOfLines

  13.   End Select
  14. Next
  15. .Close 1
  16. End With
  17. fs = Dir
  18. Loop
  19. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# PJChen


    開啟檔案不更新連結
  1. Sub Try()
  2. fd = ThisWorkbook.Path & "\" & Sheets(1).[E6] & "\"
  3. fs = Dir(fd & "*.xlsm")
  4. fs = Dir(fd & "*.xls")
  5. Do Until fs = ""
  6. Application.DisplayAlerts = False
  7. With Workbooks.Open(fd & fs, False)  ' 開啟檔案不更新連結
  8. 'With Workbooks.Open(fd & fs, True)  ' 開啟檔案更新連結

  9. For Each vbc In .VBProject.VBComponents
  10.   Select Case vbc.Type
  11.   Case vbext_rk_Project, vbext_wt_Browser, vbext_ct_MSForm '註
  12.     .VBProject.VBComponents.Remove .Item(vbc.Name)

  13.   Case Else
  14.     .VBProject.VBComponents(vbc.Name).CodeModule.DeleteLines 1, _
  15.     .VBProject.VBComponents(vbc.Name).CodeModule.CountOfLines

  16.   End Select
  17. Next
  18. .Close 1
  19. End With
  20. fs = Dir
  21. Loop
  22. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2012-6-12 16:36 編輯

回復 8# PJChen
1. 並無你所說當無程式碼檔案執行時會停止的現象
2. 要正確顯示檔名,只能借用儲存格顯示
  1. Sub Try()
  2. Dim fs
  3. Application.DisplayAlerts = False
  4. fd = ThisWorkbook.Path & "\" & Sheets(1).[E6] '檔案目錄
  5. Set fos = CreateObject("Scripting.FileSystemObject")
  6. Set fdn = fos.getfolder(fd)
  7. Set fc = fdn.Files '檔案目錄中所有檔案
  8. For Each fs In fc
  9. [A1] = fs.Name '借用儲存格顯示正確檔名
  10. With Workbooks.Open(fd & "\" & [A1].Text, 0) ' 開啟檔案不更新連結
  11. For Each vbc In .VBProject.VBComponents
  12.   Select Case vbc.Type
  13.   Case 100
  14.     .VBProject.VBComponents(vbc.Name).CodeModule.DeleteLines 1, _
  15.     .VBProject.VBComponents(vbc.Name).CodeModule.CountOfLines '刪除所有程式碼
  16.   Case Else
  17.     .VBProject.VBComponents.Remove .VBProject.VBComponents.Item(vbc.Name) '移除模組、表單、類別模組
  18.   End Select
  19. Next
  20. .Close 1
  21. End With
  22. Next
  23. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題