人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAでのCPU割り当てについて。

windows7 64bit core i7のノートパソコンを使っています。
ExcelVBAの処理速度について疑問をもち色々と検証していたのですが(内容はhttp://q.hatena.ne.jp/1310963018)
単純なループを一回する毎にカウンターがひとつ進むコードをかきリソースモニターをみていたら、
6つあるコアのうち、ひとつだけが100%近くになっていました。
素人考えでは、これが分散化され複数のコアで計算出来れば、処理速度もアップするのでは?
と思います。

・セルの自動計算は手動にしています。
・オプションのコアの割り当ては6個にしています。

質問の内容は、VBAを複数のコアで処理するようにできるのか?
出来ない場合でもこうすれば高速化できるヨ みたいなのがあれば教えていただきたいです。

●質問者: lupink
●カテゴリ:コンピュータ
✍キーワード:Core i7 CPU VBA windows7 けが
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SweetSmile1978
●250ポイント

Excel 2007 以降はマルチコアCPUにも対応していますが、

ユーザが作った関数などはマルチコア対応ではありません。

通常マルチコアを有効に使うためにはマルチスレッドでの処理を行います。

残念ながらVBA単独でのマルチスレッド処理はできないと思います。

アドインを作ってやることで出来そうな記述もありますが、

実際に作ったことがないのでわかりません。

言語も C/C++ または C# などの知識と

マルチスレッドに関する知識が必要になります。

Excel 2007 におけるパフォーマンスの改善

http://msdn.microsoft.com/ja-jp/library/aa730921.aspx#aa730921_topic9

Excel 2007 のアドイン (XLL) の開発

http://msdn.microsoft.com/ja-jp/library/aa730920(v=office.12).aspx

◎質問者からの返答

なるほど、そもそもVBAがマルチスレッド対応していないのですね。

回答ありがとうございました。


2 ● ニャンざぶろう
●250ポイント

VBAでは複数のコアで計算する、マルチスレッド対応プログラムは書けないようです。

>Excel2007 から ワークシート関数がマルチスレッド対応になっていますが、マルチスレッド対応の UDFs を作成できるのは XLL だけで、VBA・COM・XLM ではマルチスレッド計算を行うことはできません。

http://supermab.com/wp/%E3%81%AA%E3%81%9C-excel-dna-%E3%81%AA%E3%81%AE%E3%81%8B%EF%BC%9F/

>クラスター セーフなユーザー定義関数は XLL で実装する必要があります。VBA や COM オートメーション アドインでは、クラスター セーフなユーザー定義関数を作成できません。

http://technet.microsoft.com/ja-jp/library/cc179167.aspx

◎質問者からの返答

詳細な回答ありがとうございます。

また高速化のアドバイスもありがとうございました。


3 ● ジュードマテイス
●0ポイント

Excel 2007 以降はマルチコアCPUにも対応していますが、

ユーザが作った関数などはマルチコア対応ではありません。

通常マルチコアを有効に使うためにはマルチスレッドでの処理を行います。

残念ながらVBA単独でのマルチスレッド処理はできないと思います

◎質問者からの返答

回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ