返回列表 上一主題 發帖

[轉貼] VBA的寫作技巧與增進效能

回復 22# skybbs

效果一樣阿
學海無涯_不恥下問

TOP

請教一下版大,當我的程式需要參考好幾個excel檔案的內容時,我以前的做法就是worksheets("data.xls")....Range(xxx)這樣取得或更新資料,可是當資料內容龐大時,速度變的好慢好慢,就算是程式內部創造一個陣列把資料先讀進來,也是得面臨那段緩慢的讀取時間。
請問VBA中是不是有甚麼正規做法可以解決大量儲存格資料存取的問題呢?在這裡麻煩一下版大,謝謝!

TOP

學海無涯_不恥下問

TOP

回復 26# cchaha_captain
試試下列程式
在開啟的所有活頁簿中,將除了作用中活頁簿 (ActiveWorkbook) , 之外的Sheets(1).UsedRange ,收集到作用中活頁簿中的ActiveSheet
  1. Sub Ex()
  2.     Dim Book As Workbook, Rng(1 To 2) As Range
  3.     With ActiveWorkbook.ActiveSheet
  4.         Set Rng(1) = .Range("A" & Rows.Count).End(xlUp)
  5.         For Each Book In Workbooks
  6.             If Book.Name <> .Parent.Name Then
  7.                 Set Rng(2) = Book.Sheets(1).UsedRange
  8.                 Rng(1).Resize(Rng(2).Rows.Count, Rng(2).Columns.Count) = Rng(2).Value
  9.                 Set Rng(1) = .Range("A" & Rows.Count).End(xlUp).Offset(1)
  10.             End If
  11.         Next
  12.     End With
  13. End Sub
複製代碼

TOP

好文+1,受益頗多

TOP

我了解意思了,但我需要想一下來看看怎麼做,
謝謝Hsieh與GBKEE兩位大哥。

TOP

我正在學習怎麼縮小記憶體的浪費,真是一篇好文章。

TOP

真的可以省下很多的垃圾指令..Thanks
Homeman

TOP

這是一篇好文章,覺得受益良多,謝謝

TOP

剛入門學習,努力學習中,謝謝大大精湛的解說!!
marklu

TOP

        靜思自在 : 【為善競爭】人生要為善競爭,分秒必爭。
返回列表 上一主題