• ベストアンサー

Excel2000 マクロの不具合?

お世話になります。 当方、Windows XP(Home Edition 2002 SP2)にoffice2000をインストールして使用しています。 Excel2000において、最後に印刷プレビューが出るマクロを作成し使用しているのですが、マクロが動作しきった後、「印刷」もしくは「閉じる」のボタンを押すと、エクセルそのものが閉じてしまいます。閉じてしまったファイルを再度開こうとすると、「別のユーザーが開いています 使用者:○○○(自分のユーザー名)」となり、読み取り専用でしか開くことができなくなります。 ただし、マクロを使用しないで印刷プレビューを開いた場合は、プレビューのみ閉じることができます。 PCを再起動させても同様のことが起こり、マクロウイルスも検知できませんでした。 内容が分かりづらいかもしれませんが、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

とりあえず定番の対処法です。上から順に試してみてください。 1 または 2 の作業で回復することが多いです。 1. *.xlb ファイルの削除   http://homepage2.nifty.com/winfaq/c/trouble.html#99 2. Temp フォルダ内の一時ファイルの削除 3. Office アップデートの実行 4. プリンタドライバを最新のものに更新 5. ディスプレイドライバを最新のものに更新

myroom508
質問者

お礼

ありがとうございました。 補足に書いたような現象は一旦収まりました。 5番まで試しましたが、画面が閉じてしまうのは相変わらずですので、新しいオフィスの購入も検討しつつ、様子を見たいと思います。 本当にありがとうございました。

myroom508
質問者

補足

ありがとうございます。 早速1→2と試してみましたが効果が無く、3を実行しSP3までインストールしましたが、マクロが入っているファイルの全てを開くことができなくなってしまいました。 ノートンのインターネットセキュリティをインストールしているため、オフィスのウィルス検索をしないようにしたりしましたが、「ファイルを開いています・・・」の状態で固まってしまいます。 なにか足りない作業があるのでしょうか。

その他の回答 (4)

回答No.4

>読み取り専用でしか開くことができなくなります。 [Alt]+[Ctrl]+[Delete]で、問題のExcelを終了すれば、再起動しなくてもいいかもしれません。 とりあえず、突然落っこちてるみたいですけど、問題のコードも一部なのでわからない部分もありますが、 1.壊れたファイルかも 新規にBookを作り、セルとモジュールをコピーしてみる。 動けば、ファイルが壊れてたんだと思います。 動かなければ、とりあえず問題のモジュールだけをコピーして動くか調べる。(セルに何もないと印刷やプレビューしないので、何か書きこんで) 補足のモジュールは end sub はあるけれど、その上が分からないので、できたらまず sub test() にしてやってみる。 動けば順に他のモジュールやシートをコピーしてみる。 2.APIとか使ってません? 他の部分でAPIとか使ってませんか? Workbook_Openや、Worksheet_Activateとかで、何かしてませんか? 3.セキュリティがあやしい とりあえず、セキュリティを一時無効にしてみる(怖い話だけれど)。 とかではどうでしょうか?

myroom508
質問者

お礼

ありがとうございます。 マクロ・VBAに関して初心者で、作成するのもコードを入力したのではなく、マクロの記録を行って作成したものでした。 教えていただいた内容を試してみます。結果については補足の欄で報告させていただきます。ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 #2の回答者です。 #2で考えていた内容とは違い、それでは、ハングするはずはありませんね。 そういう現象は覚えがあるのですが、今は、はっきりしません。 Sub TestMacro2() With ActiveSheet  .Columns("U:V").Hidden = True ' .Range("W1:X1").Select '意味が分かりません。  '.PageSetup.PrintArea = .Range("W1:X20").Address ''例  .PrintPreview  .Columns("U:V").Hidden = False End With End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 私も、#1 さん同様に、コードを見せなくてトラブルがあるという質問には、基本的に、VBAの質問として成り立ちません。コードを披露しても、決して、あなた自身を批判するような人はいませんし、さげすむような人はいません。いたら、その人は相手にしないほうがよいです。誰でも、最初はあるわけで、いきなり上手になる人は、数少ないです。 実際、そのコード自体は、言うまでもなくハングしています。 直すべき点というよりも、もともと内容的に印刷のユーザー選択ですから、プレビューまででコードは止めることにします。これ以外にも、作ったことがありますが、あまりはっきり覚えがありません。確か、公開されていない方法があったように思います。 Sub TestMacro()  With ActiveSheet    .PageSetup.PrintArea = .Range("A1").CurrentRegion    .PrintPreview  End With End Sub

myroom508
質問者

お礼

ありがとうございます。 肝心なことをお伝えしていませんでしたが、マクロ・VBAに関して初心者で、作成するのもコードを入力したのではなく、マクロの記録を行って作成したものでした。 教えていただいた内容を試してみます。結果については補足の欄で報告させていただきます。ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>最後に印刷プレビューが出るマクロを作成し使用しているのですが ご自身で作成されたのですか? Excelを閉じるようなコードがあるとか? と言うかコードの提示がないので何とも言えないですが。

myroom508
質問者

補足

マクロは自分で作成しました。 エクセルを閉じるコードは入れていないつもりです。 概要は、印刷の際に必要の無い列を隠してページの設定を調整し、プレビューを表示させるというものです。 コードとは下記のことでよいのでしょうか。 Columns("U:V").Select Selection.EntireColumn.Hidden = True Range("W1:X1").Select ActiveWindow.SelectedSheets.PrintPreview End Sub

関連するQ&A