Board logo

標題: 為什麼這個檔案用起來這麼慢..... [打印本頁]

作者: color790    時間: 2011-10-25 22:30     標題: 為什麼這個檔案用起來這麼慢.....

本帖最後由 color790 於 2011-10-28 23:13 編輯

自己拚拚貼貼而成的檔案, 只是.....怎麼越用越慢
不知道哪裡有問題, 望大家幫個忙:dizzy:
作者: luhpro    時間: 2011-10-26 21:00

本帖最後由 luhpro 於 2011-10-26 21:05 編輯

回復 1# color790
檔案讀起來確實很慢,
一般來說若檔案本身並不大所以不應該出現此情形時,
可以考慮將內容全部都搬移到另一個新建立的Excel檔案,
當然不會是整個檔案全部照搬,
那樣問題還是會存在而沒有解決.

我較常使用的方法是 :
1. 分別針對各個 Sheet 執行 -> 移動或複製 -> 將建立副本打勾 -> 目標選新活頁簿 確認此動作的時間是否較長,
以判斷毛病應該是在哪幾個 Sheet 上,
確認後請記得關閉(並選不要儲存)新開的 Excel 活頁簿檔案. (本例中我發現 tmp 與 tmp2 兩個 Sheet 明顯讀取時間過長)

2. 沒問題的 Sheet 直接複製到新的 Excel 檔內.

3. 而對於有問題的 Sheet 則善用 "複製 -> 選擇性貼上",
只複製過來有資料的儲存格及其格式就好(資料與格式共兩次分別貼上, 且應避免選整列或整欄),
沒資料的直接捨棄.

4. 將程式內容文字分別 Copy 到與其相對應的程式區塊內.

最後另存新檔即可.

底下是我依上述方式重做過的檔案,
你看看是否符合你的需求.
[attach]8348[/attach]
作者: color790    時間: 2011-10-26 21:17

原來有降的方法.....太謝謝luhpro的幫忙 ^^
只是很奇怪, 怎這兩個工作頁會降
其中一個工作頁程式碼如下...是哪個部份出錯了嗎?

For i = 3 To Worksheets("代碼").[a65536].End(xlUp).Row
num = Worksheets("代碼").Cells(i, 1)
Worksheets("tmp").Range("A:Z").ClearContents


With Worksheets("tmp").QueryTables.Add(Connection:="URL;http://jsjustweb.jihsun.com.tw/z/zc/zcl/zcl_" & num & ".asp.htm" _
    , Destination:=Worksheets("tmp").Range("A1"))

    .Name = ""
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
作者: Hsieh    時間: 2011-10-26 21:30

回復 3# color790

檔案我是根本開不起來
不過光是你這個程式碼
你要下載所有代碼的資料就必須花費相當長的時間
至於若有其他計算的話
那更不用說肯定會慢的
作者: color790    時間: 2011-10-26 22:22

本帖最後由 color790 於 2011-10-26 22:24 編輯
回復  color790

檔案我是根本開不起來
不過光是你這個程式碼
你要下載所有代碼的資料就必須花費相當長 ...
Hsieh 發表於 2011-10-26 21:30



   執行是要花一段時間, 但剛開檔案還沒執行前檔案就很慢, 比如游標要選A1, 要4,5秒才會點到
  而且本來檔案本來只有幾百K, 執行過幾次後就變2點多Mb, 而且這兩個工作頁只是暫存, 也都有執行以下,
Worksheets("tmp").Range("A:Z").ClearContents
還是說ClearContents 無法真的清除乾淨,而造成檔案越來越慢?????
(把這兩個工作頁刪除再重新加入, 就又變順很多)
作者: oobird    時間: 2011-10-27 09:27

避免設置不必要的格式
如儲存格填滿顏色會讓檔案變得肥大。
作者: diabo    時間: 2011-10-27 15:46

本帖最後由 diabo 於 2011-10-27 15:52 編輯

回復 1# color790

Querytabe 用完要刪除.....不然會越來越肥.....

到 tmp 或 tmp 2工作表,按一下「名稱方塊」下拉選單....就會看到有 好幾百的....

外部資料_1
外部資料_2
外部資料_3
....
.....
作者: diabo    時間: 2011-10-27 15:58

回復 1# color790

用這個清一下不要的QueryTable
  1. Sub DeleteTmpQueryTable()

  2.     Dim QT As QueryTable
  3.     For Each QT In Sheets("tmp").QueryTables
  4.         Debug.Print QT.Name
  5.         QT.Delete
  6.     Next
  7.     For Each QT In Sheets("tmp2").QueryTables
  8.         Debug.Print QT.Name
  9.         QT.Delete
  10.     Next

  11. End Sub
複製代碼

作者: color790    時間: 2011-10-27 16:39

回復  color790

用這個清一下不要的QueryTable
diabo 發表於 2011-10-27 15:58


以前從來不知道有這個地方, 太感謝了
再請問一下,QueryTable 什麼時候會有像這樣累積的現象
作者: diabo    時間: 2011-10-27 17:04

回復 9# color790


    每查一次就會累積一次,可加參數刪除之...
作者: color790    時間: 2011-10-27 21:20

回復  color790


    每查一次就會累積一次,可加參數刪除之...
diabo 發表於 2011-10-27 17:04


謝謝解答 , 看來我有好多個檔案需要加入這個參數,            ^^
作者: 棋語鳥鳴    時間: 2011-10-27 21:41

回復 8# diabo

請問這個巨集是將sheet名稱改過,就能使用了嗎?
作者: diabo    時間: 2011-10-27 21:44

回復 12# 棋語鳥鳴


    YES




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)