Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7830 / 13645 ツリー ←次へ | 前へ→

【36218】シートの保護をVBAで書くと・・ an 06/3/25(土) 10:42 質問[未読]
【36225】Re:シートの保護をVBAで書くと・・ yuu1 06/3/25(土) 13:51 回答[未読]
【36242】Re:シートの保護をVBAで書くと・・ an 06/3/25(土) 18:20 お礼[未読]
【36249】Re:シートの保護をVBAで書くと・・ yuu1 06/3/25(土) 23:56 回答[未読]
【36264】Re:シートの保護をVBAで書くと・・ an 06/3/27(月) 11:21 お礼[未読]
【36285】Re:シートの保護をVBAで書くと・・ yuu1 06/3/27(月) 15:44 回答[未読]
【36313】Re:シートの保護をVBAで書くと・・ an 06/3/28(火) 12:01 質問[未読]
【36450】Re:シートの保護をVBAで書くと・・ Jaka 06/3/31(金) 14:36 発言[未読]
【36581】Re:シートの保護をVBAで書くと・・ Jaka 06/4/4(火) 14:58 発言[未読]
【36582】Re:シートの保護をVBAで書くと・・ an 06/4/4(火) 15:32 質問[未読]
【36583】Re:シートの保護をVBAで書くと・・ an 06/4/4(火) 15:35 質問[未読]
【36584】Re:シートの保護をVBAで書くと・・ Jaka 06/4/4(火) 17:06 発言[未読]
【36623】Re:シートの保護をVBAで書くと・・ an 06/4/5(水) 17:57 お礼[未読]

【36218】シートの保護をVBAで書くと・・
質問  an E-MAIL  - 06/3/25(土) 10:42 -

引用なし
パスワード
   いつもお世話になっています。
昨日3枚のシートの保護をかけて別ファイルにそのシートを
コピーし保存するマクロを書いて実行しました。
2枚のシートに保護はかかったのですが、3枚目は
保護されませんでした。
また、ロック解除されているセル以外は、選択もできない
設定にしましたが、保存されたファイルを確認すると
選択出来てしまっています。(入力などは出来ませんが、、)
これはエクセル(2002)の仕様なのでしょうか?

お分かりになる方がいらっしゃいましたら
教えていただけると助かります。

記録マクロ---------------------------------------------------------------

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
  ActiveSheet.EnableSelection = xlUnlockedCells
  Sheets("Sheet2").Select
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
  ActiveSheet.EnableSelection = xlUnlockedCells
  Sheets("Sheet3").Select
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
  ActiveSheet.EnableSelection = xlUnlockedCells
  ActiveWorkbook.SaveAs Filename:= _
    "C:\Documents and Settings\Owner\My Documents\test1.xls", FileFormat:= _
    xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
    , CreateBackup:=False

------------------------------------------------------------------

【36225】Re:シートの保護をVBAで書くと・・
回答  yuu1  - 06/3/25(土) 13:51 -

引用なし
パスワード
   こんにちは
>2枚のシートに保護はかかったのですが、3枚目は
>保護されませんでした。
その保護されなかったシート名は何でしょうか?

>また、ロック解除されているセル以外は、選択もできない
>設定にしましたが、保存されたファイルを確認すると
>選択出来てしまっています。(入力などは出来ませんが、、)
>これはエクセル(2002)の仕様なのでしょうか?
仕様ですね。バージョンによるかも?
EnableSelectionプロパティはファイルに保存されないので、
Workbook_Openイベントなどに記述し設定する必要があります。

【36242】Re:シートの保護をVBAで書くと・・
お礼  an E-MAIL  - 06/3/25(土) 18:20 -

引用なし
パスワード
   ▼yuu1 さん:
早速の回答、有難うございました!

>その保護されなかったシート名は何でしょうか?
"利用明細(部門)"です。
シート名が関係しているのでしょうか?

>Workbook_Openイベントなどに記述し設定する必要があります。

コピーして新規保存したファイルに記述するのでしょうか?
よく分かっていなくて申し訳ありません。
もしそうでしたら、配布するファイルなので、マクロ記述なしで
送りたいのですが、やはり無理なのでしょうか。

【36249】Re:シートの保護をVBAで書くと・・
回答  yuu1  - 06/3/25(土) 23:56 -

引用なし
パスワード
   こんにちは
>>その保護されなかったシート名は何でしょうか?
>"利用明細(部門)"です。
>シート名が関係しているのでしょうか?
示されたマクロにシート名"利用明細(部門)"はでて来ませんね。
そのシートがアクティブシートでなければ保護されません。
それより
 Sheets("利用明細(部門)").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
みたいに、明確にシート名を指定して保護したほうがいいでしょう。

>もしそうでしたら、配布するファイルなので、マクロ記述なしで
>送りたいのですが、やはり無理なのでしょうか。
マクロ無しでは無理でしょう。
繰り返しますが、
EnableSelectionプロパティはファイルに保存されないので...

【36264】Re:シートの保護をVBAで書くと・・
お礼  an E-MAIL  - 06/3/27(月) 11:21 -

引用なし
パスワード
   ▼yuu1 さん:
アドバイス有難うございます!
大変助かります。

>示されたマクロにシート名"利用明細(部門)"はでて来ませんね。

質問のところで、示したマクロはシート名を明確
にしていませんが、実データではシート名を指定しています。

>そのシートがアクティブシートでなければ保護されません。

アクティブにしてから保護するマクロにしてありますが、、

>EnableSelectionプロパティはファイルに保存されないので...

保存されないことが分かって大変助かりました。
ありがとうございました。

【36285】Re:シートの保護をVBAで書くと・・
回答  yuu1  - 06/3/27(月) 15:44 -

引用なし
パスワード
   こんにちは
>>そのシートがアクティブシートでなければ保護されません。
>アクティブにしてから保護するマクロにしてありますが、、
だったら、保護されるはずです。
示されたマクロは1番目のシートがアクティブ状態で実行しないと
いけませが、そのように実行していますか?
このような不確定なことではなくSelectをやめて記述する
以下のような一般的な方法を示したのですが試されたでしょうか?

> Sheets("利用明細(部門)").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
>みたいに、明確にシート名を指定して保護したほうがいいでしょう。

【36313】Re:シートの保護をVBAで書くと・・
質問  an E-MAIL  - 06/3/28(火) 12:01 -

引用なし
パスワード
   ▼yuu1 さん:
御礼が遅くなりまして申し訳ありません。

yuu1さんに教えていただいた記述を繰り返しを入れている関係で
UserInterfaceOnlyに変えてありますが、、

Sheets("利用明細(部門)").Protect UserInterfaceOnly:=True, Contents:=True, Scenarios:=True

と記述しました。

が、3枚目のシートである"利用明細(部門)"だけが依然として
保護がかからない状況です。

Excel2002の場合、2枚しか保護がかからないような仕様なのでしょうか・・・

【36450】Re:シートの保護をVBAで書くと・・
発言  Jaka  - 06/3/31(金) 14:36 -

引用なし
パスワード
   こんにちは。
状況がわかってないけど、
まず、保護がかかってないと言うのは別名保存したブックのことでしょうか?

一旦、ActiveWorkbook.SaveAs Filename:= ・・・・のコードをコメントにして、
シートに保護がかかっているかどうか確認されてみてはどうでしょうか?

別名保存って、別名保存したブックと勝手に摩り替っちゃうから、扱いにくいんだけど、
1シートに記載されたデータ量がさほど多くないなら、
1枚目シートを新しいブックとしてコピー、作ったブックに残りのシートを複製して、各シートを保護する。

シートの複製って、データ量によっては失敗したりするから、新しいブックと作ってコピペした方が安全なようなきもします。
この新しいブックを保護して名前を付けて保存してやれば.....。

まずは、別名保存する前の元ブックの各シートに、保護がかかっているかどうか確認された方がいいと思います。

【36581】Re:シートの保護をVBAで書くと・・
発言  Jaka  - 06/4/4(火) 14:58 -

引用なし
パスワード
   今ごろですが、サンプル。
作成したブックのシート枚数などが合わない等、エラー処理は入れてません。
PasteSpecial止めて調整。4/4(見ないだろうけど)

Sub Macro1()
  Dim NEWWB As Workbook
  Application.ScreenUpdating = False
  Set NEWWB = Workbooks.Add
  With ThisWorkbook
    For i = 1 To 3
      .Sheets(i).Cells.Copy NEWWB.Sheets(i).Range("A1")
      NEWWB.Sheets(i).Name = .Sheets(i).Name
      DoEvents
    Next
  End With
  For i = 1 To 3
    NEWWB.Sheets(i).Protect UserInterfaceOnly:=True, Contents:=True, Scenarios:=True
  Next
  NEWWB.SaveAs FileName:="保存フォルダ名\qqqqqqq.xls" _
             , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
              ReadOnlyRecommended:=False, CreateBackup:=False
  Application.ScreenUpdating = True
  NEWWB.Close
  Set NEWWB = Nothing
  MsgBox "終了"
End Sub

【36582】Re:シートの保護をVBAで書くと・・
質問  an  - 06/4/4(火) 15:32 -

引用なし
パスワード
   ▼Jaka さん:
>今ごろですが、サンプル。
ありがとうございます!
DoEventsの使い方など分からないところが
たくさんありますが、勉強させて頂きます。

さらに図々しいですが、質問させてください。

シートの保護でパスワードをかけるとき、
以下の文ですと、その添付ファイルを開くときに
パスワードを要求されてしまいます。

入力しようとしたときのみパスワードを
設定するにはどのように書けばいいのでしょうか?

申し訳ありません、よろしくお願い致します。


途中で分からない構文
>作成したブックのシート枚数などが合わない等、エラー処理は入れてません。
>PasteSpecial止めて調整。4/4(見ないだろうけど)
>
>Sub Macro1()
>  Dim NEWWB As Workbook
>  Application.ScreenUpdating = False
>  Set NEWWB = Workbooks.Add
>  With ThisWorkbook
>    For i = 1 To 3
>      .Sheets(i).Cells.Copy NEWWB.Sheets(i).Range("A1")
>      NEWWB.Sheets(i).Name = .Sheets(i).Name
>      DoEvents
>    Next
>  End With
>  For i = 1 To 3
>    NEWWB.Sheets(i).Protect UserInterfaceOnly:=True, Contents:=True, Scenarios:=True
>  Next
>  NEWWB.SaveAs FileName:="保存フォルダ名\qqqqqqq.xls" _
>             , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
>              ReadOnlyRecommended:=False, CreateBackup:=False
>  Application.ScreenUpdating = True
>  NEWWB.Close
>  Set NEWWB = Nothing
>  MsgBox "終了"
>End Sub

【36583】Re:シートの保護をVBAで書くと・・
質問  an  - 06/4/4(火) 15:35 -

引用なし
パスワード
   ▼Jaka さん:

現在のパスワードの設定について書くのを
忘れていました。↓

Sheets("利用明細 (部門)").Protect Password:="pass",
rawingObjects:=True, _
    contents:=True, UserInterfaceOnly:=True

パスワード要求なしで開けるようにする方法を
教えて頂けると助かります。

【36584】Re:シートの保護をVBAで書くと・・
発言  Jaka  - 06/4/4(火) 17:06 -

引用なし
パスワード
   ▼an さん:
>パスワード要求なしで開けるようにする方法を
>教えて頂けると助かります。
読み取りか書き込みの判断は、どうやってするのでしょうか?
パソコンが自動で判断できないと思います。
どっちにしろ、パスワード保護したら、パスワードは必要だと思います。
マクロで開くなら別ですけど。

どんな感じなのか解らないので、抜擢。
Workbooks.Open(C:\xxxxxx\xxxx.XLS,PASSWORD: = "1111", WriteResPassword: = "1111")    

Workbooks.Open Filename:=C:\xxxxxx\xxxx.XLS, Password:=MYPASS

【36623】Re:シートの保護をVBAで書くと・・
お礼  an  - 06/4/5(水) 17:57 -

引用なし
パスワード
   ▼Jaka さん:

有難うございました。
お蔭様で解決しました。

今後とも宜しくお願いいたします。

7830 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free