返回列表 上一主題 發帖

[發問] VBA運轉停不了

請問我運行這個VBA, 有30個SHEETS, 但運轉了5分鐘還沒有停頓, 是有甚麼錯誤呢? 又如何以以在完成存檔後自動 ...
missbb 發表於 2015-8-6 23:48

一、  .Copy 範圍太抽象了,應明確告知其實際複製範圍;
二、 妳檔案尚未新增何來儲存檔案?
三、 以妳原本內容為稿底、稍予修正,請妳自行再測試看看:
  1. Sub Splitbook()
  2.     Dim xPath As String, xWs As Worksheet

  3.     xPath = Application.ActiveWorkbook.Path

  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False

  6.     For Each xWs In ThisWorkbook.Sheets
  7.         With Sheets(xWs.Name)
  8.             .UsedRange.Copy

  9.             With Workbooks.Add(1)
  10.                 .Sheets(1).Paste
  11.                 .SaveAs xPath & "\" & xWs.Name & ".xls", FileFormat:=xlExcel8
  12.                 .Close
  13.             End With
  14.         End With
  15.     Next
  16.     Application.DisplayAlerts = True
  17.     Application.ScreenUpdating = True
  18. End Sub
複製代碼

TOP

回復  missbb
你的程式沒問題.
可能因有30個SHEETS的資料大, 所以會運轉了5分鐘還沒有停頓,但耐心等候會 ...
GBKEE 發表於 2015-8-7 14:35

在我的Excel 2010 測試時,如果不加入 FileFormat:=xlExcel8 的話,
儲存的 xls 檔案均無法開啟 (如附圖), 所以我才會稍加修改,謝謝您的指導!
  1. Sub Splitbook2()     '  GBKEE
  2.     Dim xPath As String, xWs As Worksheet

  3.     xPath = Application.ActiveWorkbook.Path

  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False

  6.     For Each xWs In ThisWorkbook.Sheets
  7.         xWs.Copy                          '  工作表複製   ->   一張工作表的活頁簿.  ->  ActiveWorkbook
  8.         
  9.         '  Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xls"     '指定路徑存檔
  10.         Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xls", FileFormat:=xlExcel8 '指定路徑存檔
  11.         Application.ActiveWorkbook.Close True
  12.     Next
  13.    
  14.     Application.DisplayAlerts = True
  15.     Application.ScreenUpdating = True
  16. End Sub
複製代碼

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題