- ベストアンサー
Excel2000のVBAにおけるActivateについてのエラーについて
- Excel2000でVBAを使用していますが、富士通製のPCでマクロを起動すると実行時エラーが発生します。
- Windows("****.xls").Activateを実行する際に「実行時エラー '9'」が表示されます。
- IBN製のPCでは問題なく動作するため、設定の問題かもしれません。Windows2000とOffice2000を使用しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純に考えるとファイルが無い場合ですが。 ファイルがあることを確認ください。 また、ディレクトリも。 ファイルオープンとのからみも あると思います。 ソースを見ないと何とも言えませんが。
その他の回答 (1)
- kenken0001
- ベストアンサー率69% (51/73)
単純なことで申し訳ありませんが 実行をステップインで行った時の 変数file_nameの内容は何ですか。 機種間で違いはありませんか。 不明な点ですが Workbooks.Open Filename:=file_name は Workbooks.Open file_name ではだめですか。 他で開かれている可能性はありませんか。 富士通機でファイルを 開く、更新、保存の 手作業の処理は可能ですか。 オープンがうまくいっているとしたら ツールバーの「ウィンドウ」のところに表示されますか。 (同じくステップインで見れませんか) オープン済みブックの確認は下記でも可 Dim ブック名 As Variant For Each ブック名 In Workbooks MsgBox ブック名.Name Next ディレクトリ内のほかのファイルではどうですか。 サーバーでなくローカルのファイルではどうですか。 サーバーとの設定が機種間で違うところはありませんか。 (ファイル共有) 以前からだめですか。 (まだ一度も成功したこと無い?) しばらく ScreenUpdating は解除して 変数の推移など様子を眺めてみてはどうでしょうか。 エラー処理はどのようなことをしていますか。 (オープン時エラーは回避する、等はありますか) 同じソースでのエラーは機種間の設定が心配です。 ネットワークファイルの扱いが気になります。 たいした事が書けなくてすいません。 何かありましたら質問ください。
お礼
Workbooks("****").Worksheets("@@@@").Activate に限らず,既にActivateが,かかっているワークブック("****") に対して, Workbooks("****").Worksheets("@@@@").Close savechanges:=False などの処理もうまくいかないことがわかりました。 コードを, ActiveWorkbook.Close savechanges:=False 等に変更することで とりあえずはエラーを回避しました。 ただ,同じモジュールをそのまま使ってPCによって現象が出るものと 出ないものがあるのが気がかりです。 NEC製のPCや他の富士通製のノートPCでは現象が出ないため, 現象が出るのは同時期にまとめて購入した特定の型のPCのようです。 1台を除き全てのPCで現象がでました。 以上です。色々とありがとうございました。
補足
ご丁寧にありがとうございます。 1)実行をステップインで行った時の変数file_nameの内容は何ですか。 機種間で違いはありませんか。 --->機種間での違いはないです。 2)Workbooks.Open Filename:=file_nameは Workbooks.Open file_nameではだめですか。 --->どちらでもOKだと思います。 3)他で開かれている可能性はありませんか。 富士通機でファイルを開く、更新、保存の手作業の処理は可能ですか。 --->手作業は問題ありません。手作業のさいにブックの使用中の警告が 出てこないので,他で使用している可能性はないと思われます。 4)オープンがうまくいっているとしたらツールバーの「ウィンドウ」の ところに表示されますか(同じくステップインで見れませんか) --->表示はされます。異常終了の際にWindowsのタスクバーにオープン したブックが出ていますので。 5)ディレクトリ内のほかのファイルではどうですか。 --->最初にユーザーの認証を行うため,別のブックを開いています。 そちらは問題なく動作します。 サーバーでなくローカルのファイルではどうですか。 --->試してみます。 サーバーとの設定が機種間で違うところはありませんか(ファイル共有)。 --->特に違いはないと思います。アプリケーション自体がサーバーの共有 ファイルにあり,参照するブックも同じフォルダー内にありますので。 --->以前からだめですか。 (まだ一度も成功したこと無い?) 一度も成功していません(>_<) 6) エラー処理はどのようなことをしていますか(オープン時エラーは回避する 等はありますか) --->オープン時エラーは回避する等の処理はいれていません。 On Error Resume Next 等をいれれば回避されるとは思うのですが その場はよくても後のメンテナンスが厄介そうなので・・・・ 以上です。 色々と説明不足で申し訳ありませんでした。 私も色々と試してみます。うまくいったら報告させてもらいます。
補足
ご回答ありがとうございます。 ご指摘のとおり,エラーの内容から考えるとそのとおりなのですが Excelのシートは全てサーバーの同一フォルダーで保管して あります。 実行しているフォルダーも同様のためファイルがないということは ありません。 ちなみにモジュールは ========================= file_name = ThisWorkbook.Path & "\****.xls" Application.ScreenUpdating = False Workbooks.Open Filename:=file_name Windows("****.xls").Activate ========================= と記述しています。 Windows("****.xls").Activate のところを Workbooks("****").Worksheets("####").Activate と変えても同様で,PCによってエラーが出てくるものと 出てこないものがあるのですが・・・ へんな質問で申し訳ありません。 何か思い当たるものがあればよろしくお願いいたします。