advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 27291 for マクロ (0.014 sec.)
[[20091028192710]]
#score: 2168
@digest: f42af291502da4a959c7646f6e71765a
@id: 46103
@mdate: 2009-10-28T23:13:02Z
@size: 3801
@type: text/plain
#keywords: テイ (15637), 付複 (13911), カホ (11311), ド付 (8919), 度ブ (4676), スワ (3926), saveasui (3659), pass (3462), keyword (3304), saved (3143), 象ブ (3011), beforesave (2916), イブ (2791), タカ (2303), beforeclose (2188), 防止 (2151), アク (2101), クテ (2052), パス (1892), sht (1860), 配布 (1796), 保護 (1752), ト以 (1624), unprotect (1620), ワー (1346), マク (1338), ブに (1333), をア (1328), カタ (1312), workbook (1298), 解除 (1225), クロ (1202)
『複数のシートのパスワード付き保護/解除マクロ』(タカタカホーク) マクロ初心者です。虫のいいお願いですがよろしくお願いします。 マクロをアクテイブにせずに入力するのを防止するために、 @保存時には複数のシートをパスワード付で保護するマクロ。BeforeCloseを使えばよいようですが、 どのように記述すればよいかわかりません。 Aファイルを開き、マクロをアクテイブにした後であれば、「特定のセル」へのアクセスにより、 自動的にパスワード付複数シートの保護を解除するマクロマクロをアクテイブにしなければパスードを入力しないと入力不可) の2つのマクロを教えてください。たとえば、パスワードはkeywordとします。 なお、マクロの記述が見えなくなるような方法はすでに入手済ですので、マクロにパスワードを記述してもかまいません。 必要な理由 @マクロ付プログラムを複数の人に配布します。中には、マクロにほどほどくわしい人やマクロをアクテイブにするのを忘れる人もいるでしょう。 (プロや超詳しい人は対象外 とします。) Aすると、マクロをアクテイブにせずに入力することもありえます。配布先のパソコンにウイルスソフトがインストールされていると、 マクロをアクテイブにしなかったりする可能性が高いです。 Bそこで、ファイルが開いた時には、パスワード付の保護状態になっていて、マクロをアクテイブにしなければ、 入力できないようにしたいのです。 ---- >マクロをアクテイブにせずに入力するのを防止するために、 なるほど、マクロを有効にしてブックを開くことを強制させたい ということですね!! この機能を追加すること自体は さほどの事はありませんが・・・。 この機能を追加した後の運用を考えると厄介かもしれません。 対象ブックのThisworkbookのモジュール(標準モジュールではありませんよ)に '===================================================================== Option Explicit Const pass = "keyword" Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim ans As Long Dim cls As Boolean cls = True If ThisWorkbook.Saved = False Then ans = MsgBox("'" & ThisWorkbook.Name & "'への変更を保存しますか?", 51) If ans = vbYes Then Call Workbook_BeforeSave(False, False) ElseIf ans = vbNo Then Else cls = False End If End If If cls = True Then Me.Saved = True Else Cancel = True End If End Sub '================================================================================== Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim sht As Object Application.EnableEvents = False For Each sht In Me.Worksheets sht.Protect pass Next If SaveAsUI = True Then Application.Dialogs(xlDialogSaveWorkbook).Save Else Me.Save End If For Each sht In Me.Worksheets sht.Unprotect pass Next Me.Saved = True Cancel = True Application.EnableEvents = True End Sub '=============================================================== Private Sub Workbook_Open() Dim sht As Object For Each sht In Me.Worksheets sht.Unprotect pass Next End Sub このコードを追加した後、保存した後、一度ブックを閉じて、再度ブックを開いて確認してみてください。 尚、 Dim sht As Object は、ワークシート以外のシートがあることを想定して、変数の型をObjectとしましたが、 ワークシート以外のシートはありえない というなら、 Dim sht As Worksheet としてください。 多少投稿された仕様と違いますが、対象ブックを「マクロを有効にして開く」と、 各シートの保護が解除されます。 マクロ無効でブックを開くと各シートの保護が解除されません。 どうしても 「特定のセル」へのアクセスにより、 自動的にパスワード付複数シートの保護を解除するマクロ にしたいなら、Workbook_Open()内のコードを別のイベントプロシジャーに記述することにないますが。 >タカタカホークさん 非常に丁寧なわかりやすい記述でした。 ichinose@ちょっと訂正 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200910/20091028192710.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97013 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional