下の「シート保護」マクロは、パスワード「111」でシートを保護しなさい。
   「シート保護解除」マクロは、パスワード「111」でシートの保護解除をしなさい。
という命令だと思うのですが・・・


Sub シート保護()
  ActiveSheet.Protect possword = "111"
End Sub


Sub シート保護解除()
  ActiveSheet.Unprotect possword = "111"
End Sub

パスワードを入力してシートの保護を解除しようとすると、
入力したパスワードは間違っています。
CapsLockキーがオフになっていることを確認し、
大文字と小文字が正しく使われていることを確認してください。
というメッセージが出るのですが・・・、
マクロで作成した保護は、マクロで解除しないとダメという意味なのですか?
シートで保護解除できるようにしたいのですが、できますか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

:について...



私の勝手な解釈で宜しければ。
あるメソッドに対して複数の省略可能で、型が同じ(後、順不同)な
引数があるときに、これは何用の値だよ、と宣言しているだけかな?
そのまま=にしてしまうと、構文上宜しくないので:=にしている?

例えば、Protect メソッドのヘルプを見てみると
expression.Protect(Password, DrawingObjects, Contents,
Scenarios, UserInterfaceOnly)
↑という構文になっています。(ワークシート用)
で、引数はPassword,Structure,Windowsの5つ有りますよね。
この引数は全て省略可能になっていますが、もし、そうでない時は
expression.Protect("Password", "DrawingObjects", "Contents",
"Scenarios", "UserInterfaceOnly")
となり、順番道理に値を使えばよいのですが、省略可能云々の条件で
~~:=と言うのを使わずに
expression.Protect("Password", "UserInterfaceOnly")
と書いてしまうと、
Password="Password", DrawingObjects="UserInterfaceOnly"
となってしまいます。

それでは困るので、~~:=を使い、この値は~~用の値だよと明示的に
宣言しているのではないでしょうか。

あまり文書で説明するのは得意でないので、よく解らないかも知れませんが...
こんな説明でどうでしょ。

注:Protectの引数は実際にはPassword以外"True"か"False"です。
  ここでは、"UserInterfaceOnly"等にしていますが、それでは正常に
  動作しないと思いますので...
  あと、繰り返し書きますが、何かで読んだ、誰かに教わったと言う訳では
  有りません。私の勝手な解釈です。
    • good
    • 0
この回答へのお礼

ご丁寧な解説、頭の下がる思いです。
ありがとうございました。
自宅ではインターネットをしていないので、カフェより返信です。
印刷して持って帰ります。
かなり・・・感激しました。
またいつか、お世話してください・・・。

お礼日時:2001/08/14 20:26

どもです。


惜しいですね、ちょっとした記述ミスです。

オブジェクト(ActiveSheets)とメソッド(Protect)は合ってます。
でメソッドの引数がちょっとだけ間違ってます。
possword = "111" '元
password:="111" '修正後

これで試してみてください。
Unprotectも同じです。
    • good
    • 0
この回答へのお礼

掲示板上でも記述ミス・・・
passwordと入っていました。
「:」がなかったみたいです・・・。
「:」はどのような役目を果たしているのですか?
機会がありましたら、また教えてください。
ありがとうございました。

お礼日時:2001/08/13 20:47

VBで作成したパスワードをシートで保護したいってこと?


たぶんねー。
無理だったような?????
よく分かんないなー。

この回答への補足

ファイルを閉じる前に、全シートを保護するよう設定しました。
ツール→保護→保護解除として解除できますか?
・・・そのような意味でした。
パスワードをつけてもつけなくても、意味がないような気がするのですが???

補足日時:2001/08/12 12:32
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qパスワードによるシートの保護&解除方法

エクセルのVBAでパスワードを使ってシートの保護、解除を
したいのですが、参考書どおりに入力しても、うまくできません!!(ё_ё)
どなたかうまくできる方法教えてください。

Aベストアンサー

>ActiveSheet.Unprotect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, password:="abc"

最初のコードは「Unprotect」では無かったですよね。
Unprotect の場合、「password:="abc"」しか指定出来ません。

また、シートをアクティブにする必要が無いのなら、
WK1.Select
ActiveSheet.Unprotect
などというコードを書くのは止めましょう。
WK1.Unprotect
と書くのがスマートです。

WK1.Unprotect password:="abc"

解らない事があったら、VBAのヘルプも活用してください。
Unprotectの部分にカーソルを置いて、[F1]キーでヘルプが参照できます。

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

QSub-EndでConsole.Writeでコマンドプロンプト出力したい

VB.NET2003:WindowApplication の Sub~End で 出力Console.Write("***") としてもコマンドプロンプトウィンドウにでないで、.NETウィンドウのデバッグ欄にしか出ない。前もって何かを指定しなければならないのでしょうが全くわかりません。ConsoleApplication ではうまくいっていますが。初心者なのでよろしくお願いします。

Aベストアンサー

Windows Applicationは,コンソールを持ちません。
# AllocConsole API等を使えば,専用コンソールを持てますが。

コンソールへ出力したいのであれば,Console Applicationにする必要があります。
なお,Console ApplicationであってもWindows Formsを開く事は可能です。

Qシートの保護をしたり、しなかったりはマクロで可能?

VBAでマクロを使って一部セルの変更をしているのですが
このマクロを実行しない(ボタンを押さない)場合は、シートのセルが
変更できないようにシートの保護をかけています。
この状態で、マクロを実行すると

実行時エラー '1004'
FontクラスのNameプロパティを設定できません。

と表示されます。
マクロ時は書き換えできて、マクロが実行していない場合、シートの書き換えができないようにしたいのですが、どのようにすればよいのでしょうか?

Aベストアンサー

保護されたシートを書き換えるにはいくつかの方法があります。

方法1
コードで保護の解除と保護をする。
sub sample1
ActiveSheet.Protect
'処理
ActiveSheet.Unprotect
end sub

http://jp5.txt-nifty.com/exhogo.htm#hogo-01

方法2
ブック起動時におまじないをする。
Sub Auto_Open()
  Worksheets("Sheet1").Protect UserInterfaceOnly:=True
End Sub

QEXCELマクロ 保護されているシートのダイアログを表示させない方法

いつもお世話になります。

EXCEL2000のマクロについて質問です。
ボタンでシート保護や保護の解除をしています。
(データ確定後に変更させないため)
保護されているときにシートをダブルクリックとすると
EXCELより「変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています。・・・変更するには・・・」
のメッセージが表示されます。
このメッセージを表示したくない場合はどうすればよいでしょうか。

Application.DisplayAlerts = False
ではできませんでした。

EXCEL2002以降ではロックされたセルの選択の許可のチェックを外すことでできそうなのですが、2000にはそのような選択肢がありません。
どうぞ宜しくお願い致します。

Aベストアンサー

保護セルのみダブルクリック禁止
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Locked Then Cancel = True
End Sub


人気Q&Aランキング

おすすめ情報