アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelvbaで教えて下さい。
今、一つのブック「X」の中に、「a」、「b」、「c」と三つのシートが存在します。

コレを閉じるときに、シート「c」だけを保存したいのです。
(シート「a」、「b」は保存したくない。(変更を反映させたくない。))

出来れば、
メッセージを出さずに閉じたいのですが。
閉じ方はブック右上の×印をクリックします。

名前の変更をしたり、他のブックにコピーなどはしたくありません。
元のブックのまま上記をやりたいのです。
宜しくご指導下さい。

A 回答 (3件)

こんにちは



>閉じるときに、シート「c」だけを保存したいのです。
操作中にユーザがCtr+Sや上書き保存を実行しても、書き換えられてしまいますけれど…?

実現したとしても、操作者にとっては「変えたはずなのに…?」ということが起こり得る謎の仕様となる可能性があるので、変えられたくないのであれば、通常の発想で行うのであればシートの保護を利用なさるのが宜しいように思います。


>名前の変更をしたり、他のブックにコピーなどはしたくありません。
>元のブックのまま上記をやりたいのです。
通常のエクセル等の操作時に、自動的にバックアップファイルが作成されています。(非表示にしているとわかりませんけれど)
これと同じように、一時的に作業用のブックを作成したりする方が簡単な気はしますが、一時的なものでもダメと言うのであれば…

1)ブックオープン時に、シートa、bのコピーを非表示シートで作成。
2)クローズ時にシートc以外は元に戻して保存

といったような仕組みにしておくことでも可能だと思います。
ただし、最初に記したように操作中に一時保存等を行った場合に、シートの状態をどうするのが良いのかという問題が残るかも知れません。(普通に考えるなら、a、bは元に戻ってしまう)
    • good
    • 0
この回答へのお礼

有り難うございます。
細かく書かなかったので気を使わせてしまいました。
意図が上手く伝わらなかったみたいです。

色々手が在るみたいですね。
考えてみます。
お世話になりました。

お礼日時:2016/10/28 21:33

とりあえず、思いつくままにアドバイスを!


>(シート「a」、「b」は保存したくない。(変更を反映させたくない。))
のであれば、
保存の前に削除することは可能ですが、シート「c」のみのブックになります。
元のブックのままではなくなります。

そもそも、シート「a」、「b」には、何が入っているのでしょうか?
単なる作業用の空のシートなら、「Private Sub Workbook_Open()」イベントで新シートを追加すれば可能ですが、なにか情報が入っていれば、その情報のみを記述した別ファイルが必要になり、そのファイルを開いて情報を追加(または参照)する必要があります。
固定された情報のみであれば、まだましです。シート「c」を参照する関数がある(またはシート「a」、「b」にシート「c」を参照する関数がある)の場合には、処理がかなりややこしくなります。

>出来れば、
>メッセージを出さずに閉じたいのですが。
>閉じ方はブック右上の×印をクリックします。
に関しては、
「Private Sub Workbook_BeforeClose(Cancel As Boolean)」イベントで、
ここで、シート「a」、「b」の削除操作を行う。
Application.DisplayAlerts = False
Thisworkbook.Save
で可能なはずです。

※ここでは、元のブック「X」にマクロが組み込まれることを前提にしています。
    • good
    • 0
この回答へのお礼

有り難うございます。
細かく書かなかったので気を使わせてしまいました。
意図が上手く伝わらなかったみたいです。

非表示についてはやってみます。
お世話になりました。

お礼日時:2016/10/28 21:32

結果的に名前などが変わっていない状態ではいけないのでしょうか?


誤解でなければ「a」「b」シートは元のまま「c」のみ変更された状態で保存だと思います。名前が同じままでは不可能です。
    • good
    • 1
この回答へのお礼

有り難うございます。
細かく書かなかったので気を使わせてしまいました。
意図が上手く伝わらなかったみたいです。
お世話になりました。

お礼日時:2016/10/28 21:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!