ストレッチ博士
他のエクセルファイルを開くとマクロエラーが発生してしまいます。いい方法ありませんでしょうか?
システムトレード用のエクセルが基本的に常時稼働しているわけですが、他のエクセルファイルをアクティブにしてしまうと、トレード用のファイルでイベントプロシージャが動いた際に、このブックにはそんなシートがありませんみたいなエラーになります。
一応、トレード専用機なのですがシミュレーションなどほかのファイルを使いたいときもありまして、現状はシステムトレード用のエクセルいったん閉じるしか方法がないという状態です。
他のブックで作業していてもバックで動き続けてくれるようにする方法がありましたらご教示くださいませ。
2022年01月19日
大野 了
ストレッチ博士さん、こんにちは!!
複数解決方法があるのですが、
一番簡単なのは、Excelを別プロセスで動かすことだと思います!!
Excelを二つ起動させると、
見た目は別のExcelですがプロセスというプログラムの管理領域が同じ場所に、二つのExcelが起動してしまいます。
この状態だと、VBAの一部が二つのExcelで共有される(Workbooksが同じになる)ため、
Sheet名などをWorkbookから指定していない場合、アクティブになったExcelのWorkbookを見に行ってしまい、
そこにシート名がないと『シート名がない』的なエラーになってしまいます。
解決するには、Workbook名から指定するといいのですが、
それですと大量にコードを直さないといけないので、二つのExcelが別のプロセスになるように起動してあげると、
コードを一切直さないくても、正常に動作すると思います
(自分もこのやり方でやっています!!)
やり方としては・・・
スタートメニューなどで、ExcelをALTキーを押しながらクリックすると、
『新しく別のExcelを起動しますか?』
と表示されます。
ここで"はい"を押すと、現在、起動しているシストレ用のExcelと別のプロセスで新しくExcelが起動します!!
これだとVBAを一切直さなくても、お互いが干渉しない個別の状態となります。
また、プロセスが別ですと、もしシミュレーション用のExcelが異常停止したような場合でも、
プロセスが別のためシストレ用のExcelが引きずられて死ぬこともなくなります。
デメリットとしては若干メモリを多く食ってしまうのですが、最近のPCですとまったく問題ないと思いまーす!!
2022年01月19日
ストレッチ博士
さすがの大野様、誠にありがとうございます。
Workbook名から指定するといいのかなと思いつつ面倒だなッと思ってしましました。
調べてみると確かにそのようなテクニックがあると判明しました。
ホントに感謝です。
その見識、もったいないです。
RSS用のシストレファイルを月額利用で販売したいですね!っていうかしませんか?
2022年01月19日
大野 了
ストレッチ博士さん、こんにちは!!
自分も同じことで困って、修正するのは面倒だったので別プロセスで上げるようにしています。
お役に立てて幸いです!!
月額利用で販売良いですねー
なんか汎用的なやつが出来て皆さんに喜んでもらえるといいですねー!!
2022年01月20日