![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.6ベストアンサー
- 回答日時:
<手順>
1. 特定ユーザーのユーザー名を調べる
標準モジュールの下の箇所を変更
Public Const SU As String = "佐藤,鈴木,高橋"
2.パスワードを決める
標準モジュールの下の箇所を変更
Public Const PW As String = "1234"
3. シートを追加し、"ログイン"と名前を付ける
4. [校閲]-[ブックの保護]でブックを保護し、2で決めたパスワードを設定する
<マクロの説明>
1. ブックを開くと、PCのログイン情報を元に特定ユーザーかどうかを判定
2. 一般ユーザーならパスワードの入力を要求
(パスワードが正しい場合)
パスワードを使ってブックの保護を解除し、全てのシートを表示する
(パスワードが間違っている場合)
ブックを閉じる
3. ブックを閉じるとき、"ログイン"シートがなければ追加する
4. ”ログイン”シート以外のシートを非表示にする
5. パスワードを使って、ブックを保護する
6. 閉じる
'*********************************
'ThisWorkbookモジュール
'*********************************
Private Sub Workbook_Open()
login
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
lockWB
End Sub
'*********************************
'標準モジュール
'*********************************
Public Const PW As String = "1234"
Public Const SU As String = "佐藤,鈴木,高橋"
'ログイン
Public Sub login()
Dim usr As String
usr = CreateObject("WScript.Network").UserName
'特定のユーザーなら、ブックのロックを解除
If InStr(1, SU, usr) > 1 Then unlockWB: Exit Sub
'一般ユーザーならパスワード要求
'パスワードが間違ってれば閉じる
If InputBox("パスワードを入力") <> PW Then
MsgBox "パスワードが違います"
ThisWorkbook.Close
Else
'パスワードが正しいければブックのロックを解除
unlockWB
End If
End Sub
'ブックのロックを解除
Public Sub unlockWB()
'ブックのロックを解除
ThisWorkbook.Unprotect PW
'シートの非表示を解除
Dim s As Worksheet
For Each s In Worksheets
s.Visible = True
Next
End Sub
'ブックをロック
Public Sub lockWB()
'ログインシートがあるがどうかチェック
Dim s As Worksheet, flag As Boolean
For Each s In Worksheets
If s.Name = "ログイン" Then
flag = True
Exit For
End If
Next
'ログインシートがなければ追加
If flag = False Then
ThisWorkbook.Sheets.Add
ActiveSheet.Name = "ログイン"
End If
'シートを非表示にする
For Each s In Worksheets
If s.Name <> "ログイン" Then
s.Visible = False
End If
Next
ThisWorkbook.Protect PW
End Sub
No.4
- 回答日時:
最後にもうひとつ
対象ブック(.xlsm)が
マクロを実行しないで開かれた場合には
この仕掛けは意味がないので、
全シートを非表示にし 保護をかけておくことを
忘れてはいけません
No.2
- 回答日時:
過去に作ったもの
ファイルの拡張子は テキトーでOK
この時は「key.dcb」とした
Sub キーファイルの設定()
Dim Path As String, WSH As Variant
Dim FSO As Object
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = WSH.SpecialFolders("SendTo")
If Path <> "" Then
FSO.CopyFile ThisWorkbook.Path & "\key.dcb", Path & "\e_key.dcb"
MsgBox "キーの設定が完了しました Windws Vista"
End If
Set WSH = Nothing
Set FSO = Nothing
End Sub
Private Sub Workbook_Open()
Dim Path As String, WSH As Variant
Dim FSO As Object
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = WSH.SpecialFolders("SendTo")
If Dir(Path & "\e_key.dcb") = "" Then
MsgBox "キーが設定されていません キーを正しく設定してください"
ThisWorkbook.Close
End If
End sub
No.1
- 回答日時:
不可能ではありません
”キー”となるものをあらかじめ所定の場所に配置し
WorkbookOpenイベントで それがあるか無いかを
判断し 無ければCloseという事であれば可能。
自分が過去に作ったものは
まず なんちゃってインストーラーを
作成します(VBAで作成)
Windowsフォルダの任意の場所に任意の名前のテキストファイルを
作成させます
その状態で 上記を実行させればOkなのです
なんちゃってインストーラーが必要な理由は
ブックを渡した人間もその仕掛けがわからないようにするためです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 スリープ復帰時にパスワードの要求がされない 4 2022/10/14 12:52
- PDF アクロバットリーダーはインストールしてます。 IPHONE、メールに添付されているパスワードが設定さ 2 2023/04/10 13:13
- その他(セキュリティ) パスワード漏洩警告表示について 1 2022/12/23 11:05
- ノートパソコン パソコンのログインが出来ない 3 2023/04/14 20:48
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- その他(ブラウザ) 自分のデフォルトゲートウェイをアドレスバーに入力し、Enterキーを押します。(一般的なデフォルトゲ 4 2022/05/30 22:43
- その他(ブラウザ) ・再投稿です 自分のデフォルトゲートウェイをアドレスバーに入力し、Enterキーを押します。(一般的 1 2022/05/30 23:16
- PDF パワポをPDFにしてパスワードをかける方法 5 2022/04/15 16:14
- Windows 10 windowsセキュリティーでパスワードエラー 1 2022/06/14 19:49
- iOS iPhone13プロ、先日IOS15 16ソフトアップデートしました。そしたら、IDとパスワードが要 2 2022/09/16 11:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBA コードを実行すると画面が...
-
VBAで複数のブックを開かずに処...
-
VBAで別のブックにシートをコピ...
-
VBA アプリケーション定義また...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
VBの処理結果をEXCELシ...
-
VBS Bookを閉じるコード
-
フォルダ内の全てのファイルに...
-
ACCESSでExcelにデータ出力、高...
-
VBA 実行時エラー 2147024893
-
VBA 別ブックからコピペしたい...
-
VBSでExcelのオープン確認
-
【VBA】全シートの計算式を全て...
-
エクセル共有化のトラブル
-
[Excel VBA] 複数のサブフォル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報