none
EXCELブックを閉じたあとにxlbファイルを作成しない方法はありませんでしょうか RRS feed

  • 質問

  • はじめて投稿いたします、よろしくお願いします。

    EXCELのVBA記述を使って簡単な口座情報の登録ツールを作成しました。

    本機能では、登録用シートの行ごとに組み込んだ計算式が消えないために、右クリックによる

    行削除や、行挿入を使えないように、CommandBarsオブジェクトを検索してメニューバー等を

    使わない設定に変更するVBA記述を追加しました。

    例)CommandBars("Standard").Enabled = False

    このブックを閉じたところ、EXCEL2016ではEXCEL15.xlbファイルが作成され、後続のVBA記述の

    ない一般的なEXCELを起動しても右クリックが使えなくなりました。

    EXCEL15.xlbを削除すれば復旧しますが、再発しますので、本ツールを閉じてもEXCEL15.xlbが

    作成されない、または自動削除できる方法があれば、課題が解消できると考えております。

    よろしくご指導をお願いします。

    以上

    2017年12月22日 0:54

すべての返信

  • 質問内容を読む限り、黒魔術で右クリックを禁止するよりもワークシートを保護し許可したセル以外の編集を禁止すべきと思います。
    2017年12月22日 1:17
  • xlbを削除という考えをするのではなく、コマンドバー等の状態を対象のシートの時のみ無効にして、それ以外の場合は有効に戻すのではダメなのでしょうか?

    '以下はThisWorkbookに記述する
    Private WithEvents app As Application
    
    Const TAERGET_SHEET_NAME  As String = "Sheet2"
    
    Private Sub Workbook_Open()
        Set app = Application
    End Sub
    
    Private Sub app_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
        If (Wb Is ThisWorkbook) Then
            On Error Resume Next
            Dim Sh As Worksheet
            Set Sh = Wn.ActiveSheet
            If (Sh Is Nothing) Then
                If (Sh.Name = TAERGET_SHEET_NAME) Then
                    Call SetEnable(False)
                    Exit Sub
                End If
            End If
        End If
        Call SetEnable(True)
    End Sub
    
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        On Error Resume Next
        Dim w As Worksheet
        Set w = Sh
        If Not (w Is Nothing) Then
            If (w.Name = TAERGET_SHEET_NAME) Then
                    Call SetEnable(False)
                    Exit Sub
            End If
        End If
        Call SetEnable(True)
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call SetEnable(True)
    End Sub
    
    
    Sub SetEnable(ByVal flag As Boolean)
        Application.CommandBars("Row").Enabled = flag
        Application.CommandBars("Column").Enabled = flag
        Application.CommandBars("Cell").Enabled = flag
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年12月22日 3:56
  • 清田でございます。

    ご説明ありがとうございました。

    コマンドバーの使用禁止設定を特定のシートにのみに限定すると

    他のEXCELブックにも影響なさそうな事がわかりました。

    2017年12月26日 6:22