• 締切済み

エクセル2003のブックの保存禁止について

Wendy02の回答

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

こんばんは。 ご質問は、VBAの世界では、かなり昔からある、よく知られた質問の一つだと思います。 リードオンリーの方法もありますが、マクロが有効であるなら、以下のようなものは、パラドックスなコードの一つです。 しかし、それに対抗して、マクロをすべて不可にするとか、はたまた、クラックとするというご意見は、ここではナシにしてください。そうした揚げ足取りの方もいますが、あくまでも、通常の使用の範囲です。ただ、VBAには、VBAでの対処法はあります。しかし、それを公開したら、そうしたプロテクトはおしまいになってしまいます。これは、あくまでも、ユーザーに保存の選択しても、保存できないことを知らせずに閉じる方法です。名前を付けて保存も利きません。 保存できなくなると、自分で書いたマクロさえ保存できませんから、イースターエッグのように、シートのセルの中に、パスワードを設けます。 以下は、シート1のZ1 になっています。シート名は、オブジェクト名ですから、シートの名前を変えてもよいです。また、Z1 の場所は、日付などで変える方法も可能です。 '--------------------------------------- 'ThisWorkbook モジュールへ Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   If Sheet1.Range("Z1").Value <> "psw" Then     Cancel = True     ThisWorkbook.Saved = True   Else     Application.EnableEvents = False     Application.Goto Sheet1.Range("A1")     ThisWorkbook.Save     Sheet1.Range("Z1").Clear     Application.EnableEvents = True   End If End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)   ThisWorkbook.Saved = True End Sub なお、 Application.Goto Sheet1.Range("A1") シート1のA1に飛ぶのは、パスワードの設定場所などの痕跡さえ残さないためです。ここは、Sheet1.Range("A1").Select は使えません。

masa21s
質問者

お礼

ありがとうございました参考になりました。 又よろしくお願いいたします。

関連するQ&A

  • EXCELブックの保存前の状態への回復

    EXCEL2002、SR-1を、2つのEXCELブックを共有で 使用しています。 EXCELが強制終了してしまい、EXCELを再度起動して 2つの修正されたブックを保存しようとしたところ 名前を間違えてしまい、別のEXCELブックのファイル名で 保存してしまいました。結局、同じ内容で別名のブックが できてしまいました。 違う名前で保存されてしまったEXCELブックを、元の内容 (保存前の状態)に復旧させることができるのでしょうか? もしそのような方法をご存知であれば、教えてください。 よろしくお願いします。

  • エクセルブックが保存できない

    エクセル2000および2003で、各シート5万個程度の式・値が入ったブック(外部参照は約一万個、シート数は2枚、大きさ約8メガバイト)が突然保存できなくなりました。 保存しようとすると「応答なし」の状態になり、エクセルを強制終了するよりほかなくなります。 それ自体をみると、単にハードの力量不足にしかみえないのですが、メモリは1GBつんでますし、もっと大きなブックもふつうに処理できていますので、別に原因がありそうです。 ただ、ブックを開くことはできるので、ファイルが壊れているわけではなさそうです。 サポートページをみてみましたが、ちょっとわかりませんでした。 どなたかこうした症状に心当たりのある方、よろしくお願いいたします。

  • ExcelのBookが開かなくて困っています

    データベースにしているExcelのBookがあります。 先ほどデータを入力し、保存して終了しました。 もう一度内容の確認のため開けようとしましたが警告のメッセージが出てきて開きません。 (メッセージの内容) (1)MicrosoftOfficeExcelのセキュリティに関する通知 警告:このファイルを開こうとしたときに、Officeファイル検証機能によって問題が検出されました。このファイルを開くのは危険であり、悪意のあるユーザーに対し、お使いのコンピューターであらゆる操作の実行を許す可能性があります。-送信者に連絡して、ファイルの保存と送信のやり直しを依頼してください。ファイルの送信者に直接または電話で確認すると、より確実です。 (2)'DataBase2xls'にアクセスできません。ファイルが破損しているか、応答しないサーバーがあるか、読み取り専用に設定されています。 (3)'DataBase2xls'には読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元が信頼できる場合は、[はい]をクリックしてください。 [はい]を選択した後、一部のデータが消失したBookがでてきました。 データベースがこのような状態になっているとは露知らず、 バックアップの方にもこの状態のものを上書き保存してしまいました。 修正あるいはデータを過去に遡らせるなどして元の状態にしたいのですが その方法をご教示下さい。 PCは家庭用のものでインターネットがつながっている程度のものです。

  • Excel 同一プロシージャー名で保存後起動しない

    ExcelのVBEの標準シートに 同じ名前のプロシージャーを作成したまま保存して終了してしまいましたが、 このExcelブックを立ち上げてようとしてもExcelアプリケーションは起動しますが、 いつまで経ってもこのExcelブックが起動しません。 プロシージャー名を修正して保存し直せばこの問題は解決すると思われますが、 どのようにすればこのExcelブックを起動することができるでしょうか。 (Windows10,Excel2007)

  • エクセル2010 保存できない

    エクセルで作成したリストを更新して使用しています 新しい情報に書き換えていざ保存を押した時に通常通り保存できず 保存前の情報にもどります 何か良からぬ設定をしてしまっているのでしょうか? 【Microsoft Excelは動作を停止しました オンラインで解決策を確認してプログラムを終了します プログラムを終了します】 と表示されどちらを選んでも元の情報に戻ります 今あるファイルデータが更新保存できればよいのですが何が原因なのでしょうか?

  • Excelでブックを値保存したい

    10のシートからなるブックがあるとします。 それぞれのシートには、関数やマクロが設定されています。 このブックを使って、すべての関数、マクロ計算が終了したあとで、結果のみのブックを作りたいのですが、どのようにすればよいでしょうか? ・元のブックには、関数、マクロを含むものとします。 ・最終的にほしいブックは  ・関数・マクロを含まない  ・罫線は元と同じ  ・印刷範囲、改ページや見出し、余白などの設定も元と同じ   よろしくお願いします。 ちなみにEXCELのバージョンは2010ですが、できれば2003でも使用可能にしたいです。

  • エクセルでシートを新規Bookにコピーして保存

    いつもお世話になっております。 毎回お世話になっております。 過去にも似たような質問をさせていただいてその時々の要求は解決しているのですが、悲しいかな各々のVBAが組み合わせられません。(というレベルです) やりたいことは、特定のBookのアクティブシートを別の新規BookのSheet1にコピーして数値で貼り付ける。➣ここまではできました。 問題はこの、新規Bookを指定のセル(D5とA1)の内容をファイル名にして指定のフォルダに保存する。が出来ません。 1.新規BookでVBAを動かしたいのですが、複数のPCで使う時にどこに記録するのかわかりません。 2.コピーして数値で貼り付けから保存までのVBAは元のシートから直接(1回の操作)でも、新規Book1を表示させてからの操作でもどちらでも良いです。 3.Book1を保存するファイル形式はVBAが含まれないxlsxが好ましいです。(メールで送信するので)

  • エクセル ブック(マクロを含む)を保存してとじると、また開きます。

    ブックに保護をかけた状態で保存してあります。 共有状態にあり、マクロを有効にしてもらいたいので、 (1)開くときに保護解除 (2)保存のときに、保護をかけて保存後、(まだ閉じるとは限らないので)保護解除 ということをやろうとし、以下のように書きました。 エクセルごとではなく、このファイルのみ終了しようとすると、 開いた後と上書保存後に保護を解除する為、 ファイルを終了する時には必ず「変更を保存しますか?」と訊かれ、 その時に「はい」を選択すると、一度はそのファイルが終了するのですが、 すぐに マクロを含むファイルを開くときに出るメッセージ「セキュリティ警告マクロ マクロ有効 マクロ無効 詳細」が出て、また開こうとします。 保存「いいえ」を選択すると、普通に終了します。 エクセルごとを終了すれば保存「はい」にしても、普通に終了します。 このファイルのみ終了する時、保存の確認で、「はい」を選び、普通に終了するには、何を直したらよいでしょうか? その前に、根本的に間違ってたりしますでしょうか・・・。 よろしくお願いします。 ThisWorkbookに、 Private Sub Workbook_Open() ActiveSheet.Unprotect Password:="(パスワード)" End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveSheet.Protect Password:="(パスワード)" Application.OnTime Now, "保護解除" End Sub 標準モジュールに、 Sub 保護解除() ActiveSheet.Unprotect Password:="(パスワード)" End Sub

  • エクセルのシートの保護、ブックの保護について

    エクセルのシートの保護、ブックの保護について いつもお世話になっております。 他のエクセルファイルとリンクしているエクセルのファイルを開いたときに、リンクの更新が表示されます。 ファイルを開いたときにリンクの更新がされないようにしたいのですが、シートの保護、ブックの保護でリンクが更新されないようにはできないでしょうか? それとも、リンクそのものを解除するしか方法がないのでしょうか…。

  • EXCELブックを保存しないで終了

    EXCEL2000で"A"というブックから"B"というブックを マクロのVBAから開きます。 両方のシートが開いた状態から,"B"のマクロより 両方のブック共に保存しないで、EXCEL自体終了するマクロ を"B"側に下のような感じで作成しました。 -------- EXCEL終了処理 ------------------ Application.DisplayAlerts = False ThisWorkbook.Saved = False Application.Quit ---------------------------------------- これで終了しようとすると、「"B"のブックを保存しますか?」というメッセージが表示されてしまいます。終了前のマクロ処理の中で"B"ブックを変更しているので、このようなメッセージが表示されると思うのですが、 Application.DisplayAlerts = False 命令は利かないのですか? どなたか教えて下さい。宜しくお願い致します。