過去ログ

                                Page      45
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼なぜシートの保護か解除されない?  allen 02/9/6(金) 18:52
   ┗Re:なぜシートの保護か解除されない?  禰宜 02/9/6(金) 21:50
      ┗Re:なぜシートの保護か解除されない?  allen 02/9/7(土) 9:57

 ───────────────────────────────────────
 ■題名 : なぜシートの保護か解除されない?
 ■名前 : allen
 ■日付 : 02/9/6(金) 18:52
 -------------------------------------------------------------------------
   皆様いつもお世話になります。
起動時にシートの保護を解除するtestA.xlsがあります。
これをtestB.xlsのWorkbook_Open()で起動させると、testA.xlsの保護が解除できません。うまく解除する方法を伝授頂ければありがたいです。

------------------------------------------------
Public Const cnstFile = "testA.xls"
------------------------------------------------
Sub DBUnlock()
' "testA.xls"のmodule1

Dim intSqty As Integer
Dim i As Integer

intSqty = Workbooks(cnstFile).Sheets.Count

For i = 1 To intSqty
  Workbooks(cnstFile).Worksheets(i).Activate
  Workbooks(cnstFile).Worksheets(i).Unprotect password:="test"
Next

End Sub

----------------------------------------
Private Sub Workbook_Open()
' "testA.xls"のopenイベント

Module1.DBUnlock

End Sub
----------------------------------------
Private Sub Workbook_Open()
' "testB.xls"のopenイベント

Dim strPath As String

strPath = Workbooks("testB.xls").Path
Workbooks.Open FileName:=strPath & "\" & "testA.xls"

End Sub
-----------------------------------------

testAを起動すると保護が解除されますが、
testBを起動しても、testAの保護が解除されません。
使用環境はWin98 Second Ed. + Excel97 SR-2です。
 ───────────────────────────────────────  ■題名 : Re:なぜシートの保護か解除されない?  ■名前 : 禰宜 <mune109@plum.plala.or.jp>  ■日付 : 02/9/6(金) 21:50  -------------------------------------------------------------------------
   これはExcel97の仕様ですね。

Excel2000では解消されている問題ですが、
97の場合は、Auto_Openを使うことで解決します。

HELPでは実行できることになっているのですが、
他BOOKからコードを通じて開いた場合、動作しないことが
ほとんどです。


<<ブックAがブックBを開く>>

◎ブックAのコード
  Workbooks.Open "B.xls"

◎ブックBのコード
  Private Sub Workbook_Open()
    処理実行          ← この処理が実行されない
  End Sub

<<ブックAがブックBを開く>>

◎ブックAのコード
Workbooks.Open "B.xls"
ActiveWorkbook.RunAutoMacros xlAutoOpen

◎ブックBのコード
Sub Auto_Open()
  処理実行          ← この処理は実行される
End Sub

結構有名な仕様ですからネットで調べると
詳細がわかるかと思いますよ。
 ───────────────────────────────────────  ■題名 : Re:なぜシートの保護か解除されない?  ■名前 : allen  ■日付 : 02/9/7(土) 9:57  -------------------------------------------------------------------------
   ▼禰宜 さん:
>これはExcel97の仕様ですね。
>
>Excel2000では解消されている問題ですが、
>97の場合は、Auto_Openを使うことで解決します。
>
>HELPでは実行できることになっているのですが、
>他BOOKからコードを通じて開いた場合、動作しないことが
>ほとんどです。
>
>
><<ブックAがブックBを開く>>
>
>◎ブックAのコード
>  Workbooks.Open "B.xls"
>
>◎ブックBのコード
>  Private Sub Workbook_Open()
>    処理実行          ← この処理が実行されない
>  End Sub
>
><<ブックAがブックBを開く>>
>
>◎ブックAのコード
>Workbooks.Open "B.xls"
>ActiveWorkbook.RunAutoMacros xlAutoOpen
>
>◎ブックBのコード
>Sub Auto_Open()
>  処理実行          ← この処理は実行される
>End Sub
>
>結構有名な仕様ですからネットで調べると
>詳細がわかるかと思いますよ。

回答ありがとうございます。
早速試してみます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 45