- 締切済み
EXCELVBA勝手にProjectが増える
初めて質問させていただきます。 わかりにくかったらすみません。 ちょっと説明が長いですが、よろしくお願いします。 見よう見まねで1年前からEXCELでマクロを作ってきました。 自分の作業効率化が目的だったので、なんとなく動いていて納得していたのですが、今回台湾で動かしたところ エラーで動かないとのこと。 ■前提条件 <作成の環境> WINDOWS 7 office2010 但し、今回対象のEXCELはoffice97-2003バージョン .xls形式で保存,実行 <エラーが発生する環境> OS ??? office2003 とのことです。 ■作業手順 1)AP-1で実行 -> ★エラー 以下の内容で修正 ・エラー画面を送付していただき、エラーメッセージは「不正確的字元」であるが、 ファイルが見つかりません的な内容と、赤字のエラー箇所から、マクロ名が漢字であるのが原因かと判断 -> マクロ名をはじめ、マクロ内のコメントを含むすべての文字を半角に修正(全角spaceがないことも確認済み) ・元々10数個のマクロがありましたが、エラーが発生するマクロのみに修正 *このとき、元のEXCELの状態が残っていたら気持ち悪いので 97-2003で新規EXCELを作成し、必要なシートをコピーで挿入 新規マクロを作成し、元のソースコードをコピーで貼り付けてマクロを更新 ・ちなみに、別名で互換性チェックを行い、2003での互換エラーは当初37あったが、 わかる範囲で色を2003の標準カラーのみに展開して現在24個の「再現性の低下」が残っている状態です。 2)上記修正対応を2回行ってもらい、最終的に AP-3で現在実行確認中 現在のvbaの構成 (日本: 問題なく実行できる) --------------------------------------------------------------------------------- ---+--- VBAProject(AP-3) +----+---Microsoft Excel Object +------sheet1 (data) <---- copyで挿入したシート +------sheet2 (grf) <---- マクロを実行したら展開されるシート +------sheet3 (index) <---- copyで挿入したシート +------ThisWorkbook +---+---標準モジュール +----Module1 ------------------------------------------------------------------------------- ■現在発生しているエラー状況 1)エラー発生箇所 上記、作業手順1)★エラーと同じ箇所(AP-1のマクロ名が漢字の箇所)でエラーが発生し、処理が中断される *実行時にはAP-3以外はすべて閉じてもらって単独で実行してもらっています。 2)エラー画面 相手側から送付してもらったエラー画面をみると、AP-1の背後に、AP-3のVBAの状態が表示されているが AP-3のvbaの構成がこちらの構成と異なっています。 3)実行時のvbaの構成 ---+--- VBAProject(AP-3) ---+--- VBAProject(Book1) ---+--- VBAProject(AP-1) +----+---Microsoft Excel Object +------sheet1 (data) +------sheet2 (grf) +------sheet3 (index) +------ThisWorkbook +---+---標準モジュール +----Module1 +----Module2 +----Module3 +----Module4 ....... 画面コピーで見るだけで現地の人にも聞けない状況で、はっきりとはわかりませんが、projectが勝手に増えています。 なぜ、閉じている過去実行したAPまで勝手にopenされて実行されるのでしょうか? AP-3自体は問題なく処理されているのでしょうか? EXCELのプロセスが正しくcloseしていない?ようですが、どうcloseしたらいいかもわかりません。 ご回答、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- eden3616
- ベストアンサー率65% (267/405)
台湾のPC・エクセル仕様がどのように影響するか分かりませんが、言語が違うだけで同じように動作するとおもいますが。 >*実行時にはAP-3以外はすべて閉じてもらって > 単独で実行してもらっています。 projectが増えているのか、最初から非表示状態で実行されているのか切り分けれないでしょうか? (projectウィンドウの状態をみるに、AP-1もAP-3も実行されていて、表示されているのはAP-1のように見受けられます) AP-1とAP-3のプロシージャ名が重複してて、操作時に誤ってAP-1が実行されていませんか? excelのプロセスが多重実行されている場合は、VBEでのプロジェクトもexcelのプロセス別で処理されますので複数のexcelプロセスは起動していないかと。 タスクマネージャのプロセスタブから「EXCEL.EXE」が複数起動していればプロセスが残っていることになりますが。 処理内容にもよるとおもいますが、特殊なことをしていなければプロセスを超えて影響しあう事はないかと。 起動時にブックの状態を判定する処理を加えるか、AP-3の処理状況については、処理内容をログデータへ随時出力するようにコードを改修されてはどうでしょうか。
補足
早々に回答ありがとうございました。 職場の環境が閲覧しかできなくて、お返事遅くなりました。 アドバイスいただいた内容について、手順を調べながら順番に確認していきました。 多重プロセスについては、教えていただいた内容でタスクマネージャーで確認し、 問題ありませんでした。 VBEの画面、普段はあまり見なかったのですが、AP-1のPROJECTが本当にないか確認している中で、 「デバッグ」-「PROJECTのコンパイル」見つけ、実行したところ、エラーが発生しました。 それが、エラーが発生したのが、AP-1の漢字のマクロ名が呼び出しされているところで 呼び出し元は「Private Sub commandbutton1 click()」でした。 AP-3を作成するときに、新規BOOKから作成しましたが、シートをコピーで持ってきて その時にコマンドボタンもつれてきました。 AP-3では、コマンドボタンに新しいマクロを登録しましたが、 コマンドボタンのオブジェクト名がcommandbutton1のままでした。 これが、プロシージャー名が重複するということでしょうか? とにかく、新規BOOAP-4を作成し、AP-3からは必要事項はセル単位でコピーし コマンドボタンも新規で作成コマンドボタンのオブジェクト名を変更しマクロを登録しました。 「デバッグ」-「PROJECTのコンパイル」で確認したら、エラーは発生しませんでした。 実行時に、2010ではエラーが発生しないが、2003ではエラーになるということでしょうか? 新しいAP-4で近々現地で再確認してもらう予定です。 結果について、また報告させていただきますが、可能性としてありますよね? これでダメなら、次回LOG出力を組み込みます。 たくさん、アドバイスありがとうございました。