PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   如何在電腦上同時跑多個巨集 (https://www.pcdvd.com.tw/showthread.php?t=1018273)

小書僮 2013-07-11 02:00 PM

如何在電腦上同時跑多個巨集
 
Google找不到這個問題
我有個VBA寫的程式.是個模擬器, 我已把輸入的參數範圍切割成好幾個段落分開跑,
每個段落大概要跑24小時左右,
但我發現Excel在執行時只會佔用25%(四核心電腦)
也就是有75%是閒置的
所以我就想乾脆能否多開三個Excel同時多跑幾個段落,這樣會快些
但發現Excel一旦在跑巨集時,整個程式就鎖住了,根本不讓我開第二個,
有人有辦法解決嗎?

T磨人 2013-07-11 02:08 PM

參考這篇 希望有幫助.
http://www.excelhero.com/blog/2010/...readed-vba.html

sazabijiang 2013-07-11 11:43 PM

我只會手動的方式.

先從程式集開啟四個Excel空白程式
再各自開啟含巨集的.xls檔案
到工作管理員, 對著 Excel.exe按右鍵, 指定要使用CPU核心
這樣就可以同時讓四個核心跑巨集

不過如果程式要跑這麼久, 用正規程式語言跑multi thread不是比較好?

小書僮 2013-07-11 11:49 PM

這模擬器有用到Excel的很多功能
用其他語言硬幹,會非常麻煩
另外你的方法不行喔
當你開了四格excel後按下第一個巨集執行時
整個excel就鎖住了

引用:
作者sazabijiang
我只會手動的方式.

先從程式集開啟四個Excel空白程式
再各自開啟含巨集的.xls檔案
到工作管理員, 對著 Excel.exe按右鍵, 指定要使用CPU核心
這樣就可以同時讓四個核心跑巨集

不過如果程式要跑這麼久, 用正規程式語言跑multi thread不是比較好?

bestbuy 2013-07-11 11:54 PM

引用:
作者小書僮
這模擬器有用到Excel的很多功能
用其他語言硬幹,會非常麻煩
另外你的方法不行喔
當你開了四格excel後按下第一個巨集執行時
整個excel就鎖住了


殺雞用牛刀, 開 VM 跑 :laugh:

不過我想應該有更好的辦法吧 :jolin:

leeno5 2013-07-12 07:15 AM

引用:
作者小書僮
這模擬器有用到Excel的很多功能
用其他語言硬幹,會非常麻煩
另外你的方法不行喔
當你開了四格excel後按下第一個巨集執行時
整個excel就鎖住了


可以用sleep
方法請參考2樓的網址

sazabijiang 2013-07-12 09:21 PM

引用:
作者小書僮
這模擬器有用到Excel的很多功能
用其他語言硬幹,會非常麻煩
另外你的方法不行喔
當你開了四格excel後按下第一個巨集執行時
整個excel就鎖住了


真的嗎? 我剛又測試了一下
兩個Excel的巨集會各自執行沒問題
請問你是先開啟四個"獨立"Excel程式嗎?

所謂獨立, 就是按Alt+F4關閉其中一個Excel時
其他Excel不會連帶一起自動關閉

如果是在檔案總管內直接點兩下檔案
這樣所有的 .xls會用同一個Excel程式來執行

h12200 2013-07-12 09:46 PM

我以前要處理這種問題時
是直接用 vb 寫程式呼叫excel 函式,做成執行檔
只要電腦夠強,愛開幾個都行
不過您vba已經寫好就不適合了,如果沒有一定的程式能力
要改成vb外部呼叫,可是大工程

剛剛查一下資料,發現excel 2007(或更新),有一個新功能
"多執行緒計算"

這樣只要開一個excel ,讓excel 自己去分配核心計算

我沒試過這個方法,所以請自行參考微軟說明
http://msdn.microsoft.com/zh-tw/library/office/bb687899(v=office.14).aspx

sazabijiang 2013-07-12 09:55 PM

有影片有真相
[YOUTUBE]dM7s2JjQgyw[/YOUTUBE] :laugh: :laugh: :laugh: :laugh:

h12200 2013-07-12 09:59 PM

1個附加檔案
excel 2007 有多執行緒的選項


所有的時間均為GMT +8。 現在的時間是10:10 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。