Excel VBA質問箱 IV

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

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


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

【9543】ブックのバッテンを使わせない方法 クモ男 03/12/8(月) 11:20 お礼
【9545】Re:ブックのバッテンを使わせない方法 INA 03/12/8(月) 12:44 回答
【9547】Re:ブックのバッテンを使わせない方法 クモ男 03/12/8(月) 13:10 お礼
【9549】Re:ブックのバッテンを使わせない方法 つん 03/12/8(月) 13:51 回答
【9558】Re:ブックのバッテンを使わせない方法 INA 03/12/8(月) 15:40 回答

【9543】ブックのバッテンを使わせない方法
お礼  クモ男  - 03/12/8(月) 11:20 -

引用なし
パスワード
   シート上にオブジェクトを並べて
データ入力画面を作成しています。

シート上に置いた終了ボタンで終わらせたいので、
ブック右上のバッテンボタンやエクセルアプリケーションの
バッテンボタンを使わせたくないのですが、
そのような方法をご存知でしたら教えてください。

【9545】Re:ブックのバッテンを使わせない方法
回答  INA  - 03/12/8(月) 12:44 -

引用なし
パスワード
   Private Declare Function FindWindow _
  Lib "User32" Alias "FindWindowA" _
  (ByVal lpClassName As String _
  , ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "User32" _
  (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Sub DeleteMenu Lib "User32" _
  (ByVal hMenu As Long, ByVal nPosition As Long _
  , ByVal wFlags As Long)
Private Declare Function DrawMenuBar Lib "User32" _
  (ByVal hWnd As Long) As Long
Private Const SC_CLOSE As Long = &HF060&
Private Const MF_BYCOMMAND = &H0&

Sub sample()
Dim myHwnd As Long
Dim myHMenu As Long
  myHwnd = FindWindow("XLMAIN", Application.Caption)
  myHMenu = GetSystemMenu(myHwnd, 0)
  If myHMenu <> 0& Then
    DeleteMenu myHMenu, SC_CLOSE, MF_BYCOMMAND
  End If
  DrawMenuBar myHwnd
End Sub
---------------
Private Declare Function FindWindow Lib "User32" _
  Alias "FindWindowA" (ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long
 
Private Declare Function GetWindowLong Lib "User32" _
  Alias "GetWindowLongA" (ByVal hWnd As Long, _
  ByVal nIndex As Long) As Long
 
Private Declare Function SetWindowLong Lib "User32" _
  Alias "SetWindowLongA" (ByVal hWnd As Long, _
  ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
Private Declare Function DrawMenuBar Lib "User32" _
  (ByVal hWnd As Long) As Long

Const WS_SYSMENU As Long = &H80000
Const GWL_STYLE As Long = -16


Sub sample2()
 Dim hWnd As Long, lStyle As Long
 hWnd = FindWindow("XLMAIN", Application.Caption)
 lStyle = GetWindowLong(hWnd, GWL_STYLE)
 lStyle = lStyle And Not WS_SYSMENU
 SetWindowLong hWnd, GWL_STYLE, lStyle
 DrawMenuBar hWnd
End Sub

---------------
Sub Sample3()
 ThisWorkbook.Protect Windows:=True
End Sub
---------------
Sub Sample4()
 Application.DisplayFullScreen = True
End Sub

ユーザーフォームで入力画面を作った方が良い気もしますが・・・

【9547】Re:ブックのバッテンを使わせない方法
お礼  クモ男  - 03/12/8(月) 13:10 -

引用なし
パスワード
   ▼INA さん:
>Private Declare Function FindWindow _
>  Lib "User32" Alias "FindWindowA" _
>  (ByVal lpClassName As String _
> :
> (途中省略)
> :
>---------------
>Sub Sample4()
> Application.DisplayFullScreen = True
>End Sub
>
>ユーザーフォームで入力画面を作った方が良い気もしますが・・・

いやー圧倒されました。ユーザーフォームで検討します。
どうもありがとうございました。

【9549】Re:ブックのバッテンを使わせない方法
回答  つん E-MAIL  - 03/12/8(月) 13:51 -

引用なし
パスワード
   こんにちは〜
INAさん、横から失礼します〜

えと、エクセルやブックの「×」を無効にするだけなら、

'==============================================
'標準モジュール
Public blnFlag As Boolean

'シート上に配置したコマンドボタン
Private Sub CommandButton1_Click()
  blnFlag = True
  Application.Quit
  ’あるいはブックを閉じる処理
End Sub

'ThisWorkbookモジュール
Private Sub Workbook_Open()
  blnFlag = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If blnFlag = False Then
    Cancel = True
  End If
End Sub
'==============================================

こんなやり方ではダメなんでしょうか?

【9558】Re:ブックのバッテンを使わせない方法
回答  INA  - 03/12/8(月) 15:40 -

引用なし
パスワード
   せっかく回答したのに、試しても頂けていないようですね・・・

sample1,2 は Api関数を使っているので、複雑に見えますが、
sample3,4だけでも出来ますよ?

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