質問: excel 仮装読取専用ブックの削除 vba の困窮者です。 excel で userform の基本形作成練習用のブックを作りました。 動作はokだったのですが、コマンドボタンのコードに「'」付きの説明を入れたら終了のときにエラーが出てブックが読取専用になってしまいました。 別名のブックを作り、そちらがokになっても、読取専用になったブックを削除できません。 原子力燃料廃棄物のようにどんどん溜まり困っています。ディスクから取り去る方法を教えて下さい。よろしくお願いします。
回答: こんにちは。 最初に、この前からの私の回答で、もともとの原因を作ったのは私の回答からかもしれませんね。 この件は、ダイアログボックスからの変更の時に、ちゃんと書けばよかったのかなって思っています。以下は、私は、userform は不得意で、あまり研究しなかったのですが、私のつたない経験から、書かせていただきます。 no.3094847 「excel のページ違反」では、余計なことだと思って書かなかったことですが、以前、ここで、userform の開発で得たいの知れないトラブルに遭っているというプロの方の質問がありました。それは、userform と同時にapplicationを終了すると、ハングするという問題です。この時の私の回答では、それぞれの終了のタイムラグがあるのではないか、という予測を立てて対処してもらい問題を解決しました。 その時に考えたのは、userform は、あまりexcel本体とつなぎが良くないようですね。 本当の専門の方がいれば分かるのですが、vbaでは、application.userformでは、間違いであるところをみると、どうも、application直接のオブジェクトではないようです。ダイアログボックスでは、hide メソッドだけでよかったのですが、userform では、hide と、unload me '(userform) の両方が必要だということです。そして、最後は、unload は必要のようです。 そうしないと、場合によってハングします(確認済み)から、今回の別のご質問(上記3094847)の問題と良く似ているように思います。 ちなみに、fomの教本の最後に出てくる、userform だけで、excelの本体を出さないマクロというのは、私は、あまり関心していません。それは、本当に気をつけないとトラブルを起こす可能性が強いと考えています。 >別名のブックを作り、そちらがokになっても、読取専用になったブックを削除できません。 この場合は、読取専用として、attribute(属性)がそうなっているのかは分かりませんが、少なくとも、オブジェクトが、どこかで共有してしまいっている可能性がつよいです。名前を変えるということではなくて、新規で作らないと、片方が立ち上がっている限りは、それは終わらない、ということになってしまいます。 ただし、この情報のいくつかは、現象面だけで内容自体を精査したものではありません。実務的に、そうすると良いなっていう程度のものです。