Board logo

標題: [發問] 關於此匯整多個檔案在一個內 如何提高效率或不開啟檔案即可複製? [打印本頁]

作者: starry1314    時間: 2015-9-10 22:02     標題: 關於此匯整多個檔案在一個內 如何提高效率或不開啟檔案即可複製?

目前已將畫面刷新,自動計算,更新連結,提醒皆關閉
但只是抓取不到100個檔案就會跑將近10分鐘......
不知還有什麼方法可加快


[attach]21949[/attach][attach]21950[/attach]
作者: 准提部林    時間: 2015-9-10 22:43

回復 1# starry1314


1.不開啟檔案(只是看不到,還是有開啟的),並不表示可以加快速度,
  有時不使用正規Workbooks.open方法,不見得可以得到更快的速度!
2.開啟檔的速度,大部份取決於檔案的大小(同一檔工作表太多也是影響因素),
  配置太多常駐公式(尤其是陣列公式.大殺手)更是雪加霜!
3.上傳附檔是您實際檔案嗎?
  若不是,應上傳正確資料結構的檔案,並詳明需求結果,
  VBA就是要針對不同需求,寫出貼切的專案,才符合效益,
  這上傳附檔,看來是想讓有類似需求的人套用,想以一擋百,
  但反而讓程式變複雜(還是您本來就需要這麼複雜)!
 
  ∼∼∼咱改不動了∼∼∼
作者: starry1314    時間: 2015-9-11 08:25

回復 2# 准提部林
1.不開啟檔案(只是看不到,還是有開啟的),並不表示可以加快速度,
  有時不使用正規Workbooks.open方法,不見得可以得到更快的速度!
了解
2.開啟檔的速度,大部份取決於檔案的大小(同一檔工作表太多也是影響因素),
  配置太多常駐公式(尤其是陣列公式.大殺手)更是雪加霜!
了解~常駐公式真的很多
3.上傳附檔是您實際檔案嗎?
  若不是,應上傳正確資料結構的檔案,並詳明需求結果,
  VBA就是要針對不同需求,寫出貼切的專案,才符合效益,
  這上傳附檔,看來是想讓有類似需求的人套用,想以一擋百,
  但反而讓程式變複雜(還是您本來就需要這麼複雜)!
附檔是我目前應用,因我所需要抓取的數據是工作簿裡面的部分範圍,因每天所需要抓取的範圍都不一樣 這個附檔剛好可以讓我方便更改所要範圍
其實我只是想要可選擇頁面及部份範圍,並匯總在一起~因所找到的大部分都是彙整整張頁面
作者: lpk187    時間: 2015-9-11 11:03

回復 3# starry1314

若只是讀取各檔案的值,應該避免使用.Select、Activate 也會讓程式速度加快很多,
單格寫入儲存格不如利用陣列一次性寫入,都會使整體性的速度差異變快很多(所謂變很多是指2倍以上)
作者: starry1314    時間: 2015-9-11 11:08

回復 4# lpk187
單隔寫入使用陣列
因我是複製一個範圍 如(A2:H20) 也是可以一樣的方法全部丟掉陣列裡面去嗎?
作者: lpk187    時間: 2015-9-11 11:48

本帖最後由 lpk187 於 2015-9-11 11:55 編輯

回復 5# starry1314

這是一個好問題,一個範圍和一組陣列,哪一個快,我沒實際去比較過,不過你有沒有發現各版大寫的程式為什麼鮮少使用Copy呢?
我在想Copy,使用的資源一定比陣列來的大陣列只是讀取值,而剪貼簿則不然,它不只讀取值,甚至於還有格式,文字...等等各式Range的資訊。
所以當處理的資料多的時候,就會有差別了
作者: jackyq    時間: 2015-9-11 13:28

回復 5# starry1314


如果要的還包含格式
那就用 copy 吧
反之, 用 ar
作者: starry1314    時間: 2015-9-11 16:37

回復 6# lpk187
恩恩~我有注意到!copy與陣列速度真的差距非常大
但之前所能寫出來的就是copy這種笨方式...陣列就不懂怎麼搞∼要再多學習
作者: starry1314    時間: 2015-9-11 16:37

回復 7# jackyq

是的

只需要值即可∼我再找找看看如何丟入陣列
作者: Joforn    時間: 2015-9-11 21:12

回復 9# starry1314
在另一个论坛里相同的问题应该也是你问的吧?那里已经给过你代码了,这里就不再重复了。
作者: Scott090    時間: 2015-9-25 07:13

回復 1# starry1314


    把資料檔當作資料庫使用,ADOSQL應該不需打開工作簿
假如檔案大又數量多對資料查詢取得的速度會有幫助
當然,SQL需要知道資料檔的結構及取資料的條件、結果的欄位是甚麼
取得資料後如需再進一步處理,就用陣列了

給參考
作者: starry1314    時間: 2015-9-25 09:23

回復 10# Joforn

謝謝~已知道如何寫入陣列~但卡在原始檔案開啟需較久時間! 效率就沒想像中提升許多
作者: starry1314    時間: 2015-9-25 09:25

回復 11# Scott090


    恩恩∼再他方論壇有看到這種方式,還在學習如何使用,跟用VBA的方式有點差異




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