Excel VBA質問箱 IV

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

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


10956 / 13646 ツリー ←次へ | 前へ→

【18946】Workbook_Open()でどうすればうまく動作するのでしょうか? タフマン 04/10/17(日) 12:22 質問[未読]
【18948】Re:Workbook_Open()でどうすればうまく動作... Kein 04/10/17(日) 13:03 回答[未読]
【18949】Re:Workbook_Open()でどうすればうまく動作... タフマン 04/10/17(日) 13:42 質問[未読]
【18950】Re:Workbook_Open()でどうすればうまく動作... Kein 04/10/17(日) 13:59 回答[未読]
【18951】Re:Workbook_Open()でどうすればうまく動作... タフマン 04/10/17(日) 14:42 質問[未読]
【18952】Re:Workbook_Open()でどうすればうまく動作... Kein 04/10/17(日) 15:16 発言[未読]
【18954】Re:Workbook_Open()でどうすればうまく動作... タフマン 04/10/17(日) 15:46 質問[未読]
【18955】Re:Workbook_Open()でどうすればうまく動作... [名前なし] 04/10/17(日) 15:51 回答[未読]
【18957】Re:Workbook_Open()でどうすればうまく動作... タフマン 04/10/17(日) 16:43 質問[未読]
【18958】Re:Workbook_Open()でどうすればうまく動作... [名前なし] 04/10/17(日) 20:16 発言[未読]
【18959】Re:Workbook_Open()でどうすればうまく動作... Kein 04/10/17(日) 20:19 回答[未読]
【18961】Re:Workbook_Open()でどうすればうまく動作... タフマン 04/10/17(日) 21:22 お礼[未読]
【18962】Re:Workbook_Open()でどうすればうまく動作... ちゃっぴ 04/10/17(日) 22:01 発言[未読]

【18946】Workbook_Open()でどうすればうまく動作...
質問  タフマン  - 04/10/17(日) 12:22 -

引用なし
パスワード
   マクロを有効にしたときだけブックを非表示にしてUserForm1を表示させたいのですが次の記述では最後のUserForm1.Showのところで止まってしまいます。

Private Const fPASSWORD As String = "Passeord" & vbBack

Private Sub HideWindow()
  Dim i As Long
  For i = Windows.Count To 2 Step -1
    Windows(i).Close
  Next
  Windows(1).Visible = False
  Protect fPASSWORD, False, True
End Sub
Private Sub ShowWindow()
  Unprotect fPASSWORD
  Windows(1).Visible = True
  Saved = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If Saved Then Exit Sub
  Select Case MsgBox("'" & Name & "' への変更を保存しますか?", vbExclamation Or vbYesNoCancel)
  Case vbYes
    HideWindow
    Application.EnableEvents = False
    Save
    Application.EnableEvents = True
  Case vbNo
    Saved = True
  Case vbCancel
    Cancel = True
  End Select
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  HideWindow
  Application.EnableEvents = False
  Save
  Application.EnableEvents = True
  ShowWindow
  Cancel = True
End Sub
Private Sub Workbook_Open()

'  ブックを非アクティブにする。
  Application.Visible = False
  
  UserForm1.Show

End Sub

【18948】Re:Workbook_Open()でどうすればうまく動...
回答  Kein  - 04/10/17(日) 13:03 -

引用なし
パスワード
   Application.Visible = False


Application.WindowState = xlMinimized

にしたら、どうでしょーか ? 以後は WindowState の値を変更することで、
対処できると思いますが。

【18949】Re:Workbook_Open()でどうすればうまく動...
質問  タフマン  - 04/10/17(日) 13:42 -

引用なし
パスワード
   >Application.Visible = False
>↓
>
>Application.WindowState = xlMinimized

keinさん有難うございました、上記のように変更しましたが
やはり同じところで止まってしまいます。
なぜなのでしょうか?

【18950】Re:Workbook_Open()でどうすればうまく動...
回答  Kein  - 04/10/17(日) 13:59 -

引用なし
パスワード
   UserForm1.Show を、先に書いてますか ? Showした後で WindowState を
変更すれば、うまくいくはずなんですが・・。

【18951】Re:Workbook_Open()でどうすればうまく動...
質問  タフマン  - 04/10/17(日) 14:42 -

引用なし
パスワード
   keinさん何度もすいません、有難うございます。
おしゃる通りに書き換えてみたのですがやはりUserForm1.Showで
止まってしまいます。

Private Const fPASSWORD As String = "Passeord" & vbBack

Private Sub HideWindow()
  Dim i As Long
  For i = Windows.Count To 2 Step -1
    Windows(i).Close
  Next
  Windows(1).Visible = False
  Protect fPASSWORD, False, True
End Sub
Private Sub ShowWindow()
  Unprotect fPASSWORD
  Windows(1).Visible = True
  Saved = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If Saved Then Exit Sub
  Select Case MsgBox("'" & Name & "' への変更を保存しますか?", vbExclamation Or vbYesNoCancel)
  Case vbYes
    HideWindow
    Application.EnableEvents = False
    Save
    Application.EnableEvents = True
  Case vbNo
    Saved = True
  Case vbCancel
    Cancel = True
  End Select
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  HideWindow
  Application.EnableEvents = False
  Save
  Application.EnableEvents = True
  ShowWindow
  Cancel = True
End Sub
Private Sub Workbook_Open()

  UserForm1.Show
  Application.WindowState = xlMinimized
  
End Sub

実行時エラー'1004':
'Worksheets'メソッドは失敗しました:'Global'オブジェクトと
言うエラーメッセージが出ます。

【18952】Re:Workbook_Open()でどうすればうまく動...
発言  Kein  - 04/10/17(日) 15:16 -

引用なし
パスワード
   ん ・・? UserForm1.Show のところで
>Worksheets'メソッドは失敗しました:
というメッセージが出るのですか ???

【18954】Re:Workbook_Open()でどうすればうまく動...
質問  タフマン  - 04/10/17(日) 15:46 -

引用なし
パスワード
   ▼Kein さん:
>ん ・・? UserForm1.Show のところで
>>Worksheets'メソッドは失敗しました:
>というメッセージが出るのですか ???

そうなんです、keinさんに教わったとおりに
べつのブックで試してみたら出来たんですが
そのブックにはUserForm1はただのデモでプロシャージャにはなにも
書いていません。
なぜなんでしょうか?

【18955】Re:Workbook_Open()でどうすればうまく動...
回答  [名前なし]  - 04/10/17(日) 15:51 -

引用なし
パスワード
   ▼タフマン さん:

>Private Sub Workbook_Open()
>
   ShowWindow  '←これが抜けてるからじゃないかと。
>  UserForm1.Show
>  Application.WindowState = xlMinimized
>  
>End Sub

【18957】Re:Workbook_Open()でどうすればうまく動...
質問  タフマン  - 04/10/17(日) 16:43 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼タフマン さん:
>
>>Private Sub Workbook_Open()
>>
>   ShowWindow  '←これが抜けてるからじゃないかと。
>>  UserForm1.Show
>>  Application.WindowState = xlMinimized
>>  
>>End Sub

名前なしさん有難うございます、上記の記述も試しましたがうまく動作しません
なんか行き詰ってしまったって感じです。
15ページほどのsheetが存在しておりますが各sheetごとにパスワードがないと
開けなくしてあります、ですがマクロを無効にして開くとほかのシートも
見ることが出来てしまうので困っています何かいい方法がありましたら
お願いします。

【18958】Re:Workbook_Open()でどうすればうまく動...
発言  [名前なし]  - 04/10/17(日) 20:16 -

引用なし
パスワード
   ▼タフマン さん:
フォームに記述してるコードも見てみないとなんともいえないと思います。

【18959】Re:Workbook_Open()でどうすればうまく動...
回答  Kein  - 04/10/17(日) 20:19 -

引用なし
パスワード
   >各sheetごとにパスワードがないと開けなくしてあります
これで分かりました。エラーメッセージに "Worksheet" が出てくるのは、
このためでしょう、きっと。
対処の方法としては、ブックの先頭に空白のダミーシートを入れておくことです。
そしてマクロは

Private Sub Workbook_Open()
  Worksheets(1).Activate
  UserForm1.Show
  Application.WindowState = xlMinimized
End Sub

としたらどうでしょーか ?

【18961】Re:Workbook_Open()でどうすればうまく動...
お礼  タフマン  - 04/10/17(日) 21:22 -

引用なし
パスワード
   Kein さん,いろいろご指導いただき有難うございました。
一度試してみます、まだまだ勉強不足でお恥ずかしい限りです。
また何かありましたらご質問しますのでその時にはまたよろしくお願いいたします。

【18962】Re:Workbook_Open()でどうすればうまく動...
発言  ちゃっぴ  - 04/10/17(日) 22:01 -

引用なし
パスワード
   Sheetの内容を知られたくないのなら、(完全に防御するには)
Excel2002以降で別ブックにして、暗号化保存しておいたほうがよいですよ。

Excelで開かなくても、Sheetの情報は見れますので・・・

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