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です。 |
これは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 結構有名な仕様ですからネットで調べると 詳細がわかるかと思いますよ。 |
▼禰宜 さん: >これは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 > >結構有名な仕様ですからネットで調べると >詳細がわかるかと思いますよ。 回答ありがとうございます。 早速試してみます。 |