dポイントプレゼントキャンペーン実施中!

いつもお世話になります。初心者ですのでよろしくお願いします。
複数の人で使用する共有のエクセルファイルがあります。
このファイルはデータ入力し印刷する目的のものですので、使用後上書き保存をさせたくないのですが、誤ってツールバーの上書き保存のアイコンを押してしまう人が何人もいます。
そこで、ツールバーの上書き保存のアイコンを押しても保存しないように設定したいのですが、できますでしょうか?
よろしくお願いします。

A 回答 (6件)

haasan99 さまへ


Wendy02 です。すみません。早くも#5の修正です。
キーの入り口が消えても、出ていたままになるので、それは、ちょっと格好が悪いです。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Worksheets("Sheet1").Range("A100").Value = 123 Then
Application.EnableEvents = False
Range("A1").Select '←ここを加えます。
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Worksheets("Sheet1").Range("A100").ClearContents
Exit Sub
End If
Application.DisplayAlerts = False
Cancel = True
Application.DisplayAlerts = True
End Sub

それから、上記のコートがあっても、保存したという擬似情報は必要です。右上の「×」ボタンの時に、ないと都合が悪いです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub
    • good
    • 0
この回答へのお礼

Wendy02さま、ご親切な回答をいただき大変ありがとうございました。
私自身、とても勉強になりました。
できることなら、郷土の名産でもお礼に差し上げたいところですが、ここはポイントでご了承ください。m(-.-)m

お礼日時:2005/09/02 13:12

こんにちは。



>ただ、コードの上半分だけでいいみたいです。全部コピーすると「End Withに対する>Withがありません」のエラーになりました。

ごめんなさい。
End With は、余分でした。
ちょっと、別の組み合わせも考えていましたもので、残し忘れしてしまいました。

>もし、よろしければ、保存時だけ、保存はされないような方法も教えていただければ幸いです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.CommandBars("Standard").FindControl(, 3).Enabled = True
 ThisWorkbook.Saved = True '←これを加える
End Sub

ThisWorkbook.Saved = True 
意味は、保存しました、という擬似情報を与えることで、保存しないようにすることです。

次は、隠し技ですが、
ある一定の条件以外は、保存そのものが出来ないようにしてしまいます。100%保存できないと、設定も保存できなくなるので、一定のキーワードを入れれば、保存できるわけです。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 If ThisWorkbook.Worksheets("Sheet1").Range("A100").Value = 123 Then
  '↑ここのキーコードを入れます。例:Sheet1 A100 に 123 と入れる。
   Application.EnableEvents = False
   ThisWorkbook.Save
   Application.EnableEvents = True
   ThisWorkbook.Worksheets("Sheet1").Range("A100").ClearContents
   Exit Sub
 End If
 Application.DisplayAlerts = False
 Cancel = True
 Application.DisplayAlerts = True
End Sub

もしも、プロジェクトをロックしたら、設定した人しか保存方法は分りません。読み取り専用になっていません。ちょうど、ExcelのEasterEggのカギに似ています。(未だ、私は開け方を知りませんが。)

前回のThisWorkbook の場所にこのコード(Private ~ End Sub)を貼り付けます。

使い方:
上記では、Sheet1のA100 に、123 というキーを入れた時だけ、保存できます。キーは、ワークシート上には残りません。キーの入れる場所は、お好きなところに。

この設定自体が分らなくなったら、マクロを使えないように、セキュリティを「上」にしてください。
    • good
    • 0

こんにちは。



以下のようにしてみたらいかがでしょうか?

Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
左上側にプロジェクトエクスプローラの窓の中に、ThisWorkbook があったら、それをダブルクリックして、開けます。もし、窓が出ていないようでしたら、Ctrl + R を押すと通常左側に出てきます。

そして、以下のコードを貼り付けます。

Private Sub Workbook_Open()
 Application.CommandBars("Standard").FindControl(, 3).Enabled = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.CommandBars("Standard").FindControl(, 3).Enabled = True
End With
End Sub

再び、Alt + F11 で、画面を閉じ保存します。このブックを再びオープンしたときには、アイコンは使えなくなっています。閉じるとまた元に戻ります。

このブックを開けている間は、上書き保存のアイコンは、灰色になって使えません。

ただし、メニューのファイルから行うことはできますから、保存自体が出来ないようになっているわけではありません。

他にも、読み取り専用ではなく、保存時だけ、保存はされないようにも出来ます。もし、よかったら、そちらもお教えします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
おっしゃるとおり、ツールバーの上書き保存のアイコンが灰色になって使えなくなりました。これだと私の希望どおりです。
ただ、コードの上半分だけでいいみたいです。全部コピーすると「End Withに対するWithがありません」のエラーになりました。初心者ですので何のことやらわかりません(+.+)
もし、よろしければ、保存時だけ、保存はされないような方法も教えていただければ幸いです。

お礼日時:2005/09/01 13:23

こんにちは。


操作は簡単ですよ。

シートを保護するには上書き保存用のパスワード設定をするのが良いかと思います。

手順です。
設定したいエクセルシートを開きます。
   ↓
ツールバーのファイルから名前をつけて保存を指定。
   ↓
その際にツールバー右にあるツールから全般オプションを選択。
   ↓
保存オプションのウインドが開き書き込みパスワードの設定が出来ます。

これで上書きからシートを保護できると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。参考になりました。
できればパスワードを利用しない方法があればと思います。

お礼日時:2005/09/01 13:16

VBA でブックにそういった機能を盛りこむことはできますが、


ファイルのプロパティを開いて、「読み取り専用」に設定するのが普通です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
できれば保存のダイアログは出したくないのですが…

お礼日時:2005/09/01 13:13

方法その1


そのファイルを読取専用の属性にする。
ファイルを右クリックし、プロパティを開きます。
読取専用というチェックボックスがありますのでこれにチェックを入れます。
すると上書き保存しようとしても名前を付けて保存のダイアログが出るので、もとのファイルが上書きされることはありません。

方法その2
ファイルをテンプレートにする。
そのファイルを開き、名前を付けて保存する。
そのときにファイルの種類をテンプレート(*.xlt)にする。
すると上書き保存しようとしたときにやはり名前を付けて保存のダイアログが出ますので上書きされることはありません。

直接の解決方法ではありませんが参考になればと思います。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
できれば保存のダイアログも出したくないのですが…
参考にさせていただきます。

お礼日時:2005/09/01 13:12

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