[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Excel2010のマクロについての質問です。
質問の内容が良く分からないのですが、「マクロ環境をリセット」はどのような ことを指しているのでしょうか。 () 内のMSサポート云々も何のために書かれたか良く分かりませんが、質問が単に 二つのマクロを同時に実行したいということであれば、
Sub 一緒に実行() マクロ処理1 マクロ処理2 End Sub としてこれを実行するのではダメなのでしょうか。 (Mook)
衝突、かつ、ほとんどMookさんのコメントと変わらないけど以下。
ちょっと文章の意味が・・・・理解力がどんどんおちているので。
>仕様変更等の都合ですので、すみませんが詳細はMSサポート等を参考にして下さい
MSサポートといっても膨大な事象の記事があるので、その中の何を参照したらいいのか??? 仕様変更の都合といわれても、その仕様変更が何なのかわからないし、仕様変更の都合だからMSサポートを参考にしなきゃいけない理由も??)
>マクロ環境を、リセットかリセットに近い環境に戻す様な、マクロ文は、無いでしょうか
これも、意味がよくわからないねぇ。マクロ環境をリセット? 使っている変数なんかを初期値に戻すということ? それは、そのようなコードを(必要なら)書いておけばいいだけのことなんだけど?
2つのマクロを連続して実行するなら
SUb 連続実行() マクロ処理1 マクロ処理2 End Sub
こうしたらいいし・・・・
これらのプロシジャの中で使っている変数の値に関することなら、やはりコードをアップしてもらわないと 一般論ではなかなか。。。。
(ぶらっと)
>この現象は、一部の人は理解されていると思いますが、
一部以外の私なので理解力がとぼしくて・・・
バージョンがかわって、いろんな予期せぬ障害がでるってのは、よくある話だけど 様々な事象があるので、せめて、MSのページの該当のURLをはってくれれば、あぁ、この障害かと わかるかもしれない。
それより、コードをアップすれば、いろんんあアドバイスが寄せられると思うけど・・・ こーーどをアップできない理由があるのかなぁ・・
スタックがオーバーフローとか、そんなこと?
(ぶらっと)
衝突、かつ、ぶらっとさんとかぶりましたが一応アップですw。
EXCEL の仕様によってマクロの処理をあわせなければならないケースは多々ある と思いますが、もう少し客観的に分かるように説明いただけないでしょうか。 ・何の処理をしているか ・仕様変更といっているのは何か(MS に説明があるのならそのリンク先) ・マクロ開始環境 といっているのは何のことか
もし、マクロの環境といっているのが、ヒープやスタックなどを指している のであれば、そのように説明していただかないとなかなか伝わりません。 まっさらにするなら EXCEL を再起動するのが手っ取り早いと思いますが、 ブックの再読み込みでよいのか、マクロの再実行でよいのか、処理により対応は異なる と思います。
制限を回避する実装方法の改善を検討するのが一番スマートだと思いますが、 これに関しては「何をしている」かの説明がないと回答ができません。 (Mook)
とりあえず再起動をする一例です。 管理用シートの A1 をカウントに使い、5回繰り返し再起動しながら処理をします。 (Mook)
Sub ResetExcel() Application.Visible = True 連続実行 With WorkSheets("管理用").Range("A1") If .Value < 5 Then .Value = .Value + 1 Application.OnTime Now + TimeValue("00:00:10"), "ResetExcel" End If ThisWorkbook.Save Application.Quit End With End Sub
バージョンがアップしたときに従来の機能で不具合が出る、それをそのままにしている MSにも困ったもんだけど、天下のMSなので、すぐに改善はしてくれないんだろうね。
http://support.microsoft.com/kb/2484082/ja
ここで対処法として掲載されていた、4つの方法のうち、1番目は、PC全体に影響 しそうだし、4.のためにわざわざ別アプリを立ち上げて・・というのもいかがかと思うけど けど、少なくとも 2.と3.ならコードをちょこっと追加するだけでいけるよね。 試す価値ありと思うけど、それをやっても だめだったということ?
(ぶらっと)
Sub test1() Dim bk As Workbook Do Set bk = Workbooks.Open(ThisWorkbook.Path & "\book1.xls") With bk.Worksheets("sheet1").Range("a1") .Value = .Value + 1 End With bk.Close True Loop End Sub
このループでリソース不足になる現象でした。 FCB領域を開放してない(ガベージコレクションがなされていない)のだろうと
Sub test1() Dim bk As Workbook Do Set bk = Workbooks.Open(ThisWorkbook.Path & "\book1.xls") With bk.Worksheets("sheet1").Range("a1") .Value = .Value + 1 End With bk.Close True doevents '←の挿入 Loop End Sub
これで改善されたことを記憶しています。 この当時、何気にループにDoevents入れているのは、見かけましたよ!!
これでも不満なら、既に投稿されている ontimeメソッドを工夫されてみては いかがですか?
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.