• ベストアンサー

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

merlionXXの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

#1.2.3です。 これではいかがでしょう?(#2での回答は、一旦他のセルを選択しないと保護解除されないため修正しました。) Private Sub Workbook_BeforeClose(Cancel As Boolean) Static st As Integer Dim rtn As Integer st = st + 1 If st > 1 Then Exit Sub rtn = MsgBox("保存しますか?", vbYesNo + vbQuestion, "(^o^)? ") If rtn = vbYes Then ThisWorkbook.Save End If ThisWorkbook.Close (False) End Sub 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

chihuma
質問者

お礼

回答感謝です! そうしますと、 他のファイルも開いていた場合、 何も入力せずに終了Ctrl+F4して、保存をいいえにすると、 砂時計のまま、画面がもどってこないですか? ・・・うわ、質問攻めですね;すみません。

関連するQ&A

  • エクセルで2つのマクロを結合したい

    毎度お世話名なっております。 以前ここで教えてもらった保存時に全シートの入力済みセルに自動で保護がかかる<マクロ1>を教えてえもらって非常に多くのBookに採用しているのですが、今回同じBookの「計算表」シートの特定のいくつかのセルだけ保護がかからないようにしたく試行錯誤で2つのマクロをつなげてみたのですが情けないことに期待通りに動かず。 単に最初のマクロのEnd Subを削除しただけではうまくいかず。 どなたかHELPお願い致します。 <マクロ1> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const MyPassword = "" 'パスワード(省略可) Dim sh As Worksheet On Error Resume Next For Each sh In Worksheets sh.Unprotect Password:=MyPassword With sh.Cells '全セルのロックを外す .Locked = False '定数が含まれているセルにロックを掛ける .SpecialCells(xlCellTypeConstants).Locked = True '数式が含まれているセルにロックを掛ける .SpecialCells(xlCellTypeFormulas).Locked = True End With sh.Protect DrawingObjects:=True, Contents:=True, _ Scenarios:=True, Password:=MyPassword Next On Error GoTo 0 End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub 保護解除() <マクロ2> ' 保護解除 Macro '' Sheets("計算表").Select Range("C6:D6").Select ActiveSheet.Unprotect End Sub

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • エクセルVBAにて保存するとき

    Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?

  • エクセル97 フォームシートの保護をする時に出る"パスワード"をコード化させたい

    「表示-ツール-フォーム」でボタンを作りました。 そして、マクロの自動登録で「シートの保護」を選び「パスワード:password」を設定し、更に「password」で保護解除をし、マクロ記録終了。 そして、各コードを「シートの保護」:ボタン3、「シートの解除」:ボタン2、に設定しました。 それらを実行させてみたのですが、特に「パスワード:password」を聞かれることなく一連の作業が終了してしまいました。 コードは以下のとおりです。 Sub ボタン2_Click() ' ' ボタン2_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Unprotect End Sub -------------------------- Sub ボタン3_Click() ' ' ボタン3_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub そこで、各ボタンのクリック時に、パスワードを聞いてきてくれるコードを書き加えたいのです。 わかる方がいらっしゃいましたら、是非教えてください!! コードに関して素人ですので、できたら、全体を通してコードを教えて頂ければ助かります。 いろいろ探してみたのですが、ギブアップです。 宜しくお願い致します。

  • エクセルで1つのマクロを複数のシートに適用したい

    いつもお世話になっております。 以前ここで入力セルはファイル保存時に自動で保護かかるように、下記のコードを教わって便利に使い始めたのでですが、同じBookの複数のシート、あるいは一括で全てのシートで有効にしたいのですが。(この機能をデフォルトで選択機能にしていないのはおかしい位に思い始めています。) シート毎に範囲名を指定して、This Workbookにマクロを登録する必要があるのでしょうか? Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const MyPassword = "" 'パスワード(省略可) Dim RowCnt As Long Dim ColCnt As Long Dim MyCell As Range With ThisWorkbook.Sheets(1) .Unprotect Password:=MyPassword For Each MyCell In Range("保護範囲") If MyCell.Value <> "" Then MyCell.Locked = True Else MyCell.Locked = False End If Next MyCell .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ Password:=MyPassword End With End Sub

  • エクセルマクロですべてのファイル保存時コメントだす

    エクセルのアドインでファイル保存するときに”保存しますか?”の ダイアログをすべてのファイルに出したいのですが、 うまくいきません。どなたかお教えください。 PERSONAL_SAVE.XLS というファイルに以下のマクロを作成し C:\Documents and Settings\***\Application Data\Microsoft\Excel\XLSTART VBのClass1に 'Option Explicit Public WithEvents App As Application Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox ("保存しますか?") End Sub を作成し、 同じくVBのThisworkbookに Dim x As New Class1 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Set x.App = Application End Sub を作成します。 このときは、ほかのファイルに対しても 保存しますか? のメッセージがでます。 しかし、 このファイルをPERSONAL_SAVE.lxa として 保存し、ツール⇒アドイン で追加し、立ち上げても 同様な動きをしません。 どうしてでしょうか? インスタンス?の関係でしょうか?Private を Publicにしても同じでした。

  • シート保護のパスワードは・・・

    下の「シート保護」マクロは、パスワード「111」でシートを保護しなさい。    「シート保護解除」マクロは、パスワード「111」でシートの保護解除をしなさい。 という命令だと思うのですが・・・ Sub シート保護()   ActiveSheet.Protect possword = "111" End Sub Sub シート保護解除()   ActiveSheet.Unprotect possword = "111" End Sub パスワードを入力してシートの保護を解除しようとすると、 入力したパスワードは間違っています。 CapsLockキーがオフになっていることを確認し、 大文字と小文字が正しく使われていることを確認してください。 というメッセージが出るのですが・・・、 マクロで作成した保護は、マクロで解除しないとダメという意味なのですか? シートで保護解除できるようにしたいのですが、できますか?

  • マクロを組むとこんなエラーが出るようになりました

    捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • unprotectが有効になりません

    VBAでどうしてもわからない点があるので教えていただけませんか。unprotectが有効にならないんです。 以下のコードでAファイルのマクロXXXを実行しても Bファイルのsheet2は保護解除されません。 悩んでます、よろしくお願いします。 EXCEL2000,2003ともにだめでした。 Aファイル  Private Sub XXX(**) { Bファイル.Save } Bファイル  Private Sub Workbook_BeforeSave(***) { sheet2.unprotect  }

  • エクセルでマクロを別のbookにコピペしたら不具合

    いつもお世話になっております。 先日ここで下記のマクロを教わって非常に感動して使い始めて、今日は他のbookへも展開しようとしたのですが、何故かコピペしたbookではエラーがでて動きません。 何度もの試行錯誤で、保護範囲に結合セルが入った場合エラーになることが分かって以降順調に使えていたのですが。 > With ThisWorkbook.Sheets(MySheet) が黄色にハイライトになります。 bookやシートを特定するようなコードは無いように思うのですが。 何が悪いのでしょう? 問題ないbookとどこが違うのでしょう? =================================== Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const RowS = 16 'ロック範囲開始行 Const RowE = 500 'ロック範囲終了行’ Const ColS = 1 'ロック開始列 Const ColE = 8 'ロック終了行 Const MyPassword = "" 'パスワード(省略可) Const MySheet = "入力表" '保護したいシート名 Dim RowCnt As Long Dim ColCnt As Long With ThisWorkbook.Sheets(MySheet) .Unprotect Password:=MyPassword For RowCnt = RowS To RowE For ColCnt = ColS To ColE If .Cells(RowCnt, ColCnt).Value <> "" Then .Cells(RowCnt, ColCnt).Locked = True Else .Cells(RowCnt, ColCnt).Locked = False End If Next ColCnt Next RowCnt .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ Password:=MyPassword End With End Sub =====================================