- ベストアンサー
PERSONAL.XLSを削除したいのですが・・・
はじめまして。超ド素人です。 エクセルVBで自己流で「マクロの記録」を使用して、 簡単なツールを作成したしていたのですが、マクロの保存先を 「個人用マクロブック」に間違って指定したところ、今まで動作していた動作していた部分が、エラーになるようになってしまいました。 (そもそも「個人用マクロブック」の用途がわかってないこともあるのですが・・・。)ただ、別のPCでは正常に動作するので、 ひとまずこれまで作ったマクロが動作するようにするには、 PERSONAL.XLSを消すしかないのかないのかと思っているのですが、 削除の方法がわかりません。どなたかご教示願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 コードをみれば、その問題も分るでしょうけれども、別に、個人用マクロブックを削除する必要もないと思います。 VB Editor のプロジェクト・ウィンドウで、+Personal.xls で、+の部分をクリックして、中を開けて、 Module1, Module2 と中身を見ていって、そこにあるコードを消去すればよいだけですね。 別の特殊なトラブルが出ているというなら、Personal.xls を削除しなければなりませんが、今のところ、その様子はないはずです。なお、Wordとは違い、Personal.xls は、常に使うためのマクロを置く場所ですから、良く考えて登録したほうがよいですね。記録マクロなどは、そのまま登録はしないほうがよいです。 削除の仕方は、以下の[XLSTART] フォルダの項目を読んでください。 Excel がエラーで起動できない場合の対処方法 http://support.microsoft.com/default.aspx?scid=kb;ja;883015 [XL2002] Excel がエラーで起動できない場合の対処方法 http://support.microsoft.com/default.aspx?scid=kb;ja;823950
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 Personal.xls の登録は、マクロが慣れてからのほうがよいかもしれませんね。 通常は、メニューやコマンドボタンにマクロを組み込むために、Personal.xls に登録します。 例えば、 >Sheets(sheet_name).Select >Sheets(sheet_name).Copy after:=Workbooks(1).Sheets(1) 時々、こういうコードを見かけます。VBAで大事なのは、「明示的」(Explicit)と言って、それは何かというのが、はっきりさせることなのですね。 ○○シートを選ぶって、どこのっていうことになりますね。 だとしたら、 ActiveWorkbook.Sheets(sheet_name).Select となりますが、 after:=Workbooks(1).Sheets(1) Workbooks(1)ってどこの(1)ということになりますね。 ということは、ある種の組み合せの条件では、このマクロでは成り立たなくなってしまいます。Workbooksの中の「1」 というのは、立ち上がりの順序です。つまり、Excel のアプリケーションの次に立ち上がる、 *.xls は、何かというと、Personal.xls があれば、それに該当してしまいます。 ということは、 元々、Book が決まっているというような状態にするしか、マクロは成立しませんね。例えば、対話型にするような場合は、かなり難しいコードになってしまいますから、For Each ~ In ---Next などで、いろんな除外条件を作ってあげたりします。
お礼
Wendy02様 追加アドバイスありがとうございました。 どうにかこうにか明示的に処理することで、他のエクセルシートを 開いていても自作ツール内で処理を完結できるようになりました。 それでも、コーディングを見られたら、笑われるとおもいますが・・・ 本当は、本でも買うべきなんでしょうが、頑張ってHELPファイルでやりきりました。 誠にありがとうございました。
お礼
Wendy02様、ありがとうございます。 Module自体はすべて解放していたのですが、だめで ひとまず「Personal.xls」を削除することで回避しました。 おそらく、私のプログラミングの問題だと思います。 別のbookから"sheet_name"を無理やりWorkbooks(1)にコピーしてる時点でたぶん間違っているのだと思います。 Sheets(sheet_name).Select Sheets(sheet_name).Copy after:=Workbooks(1).Sheets(1) 現に、今利用しているツールは、他のエクセルシートを開いていないことが前提になってしまっています。(なんともかっこ悪いつくりなのですが・・・) 本当は、Workbooks(1).Sheets(1)では無く、明示的にどのBookのどのSheetと記述すれば解決する問題なのかも知れませんが、 超ド素人のため、今のところどうすればいいのかわかりませんが、少しずつ勉強したいと思います。 今後、マクロの登録先には、ご指摘いただいた内容をよく考慮しておきます。 本当に、ありがとうございました。