none
アクセスについての質問です、ショートカットキーまたはナビゲーションウインドウの使用禁止について RRS feed

  • 質問

  • 環境:Windows7,Access2010
    上記環境で、MDEを作成しています。
    作成したもとのVersionはAccess2003でした。

    質問:
    個々のファンクションキー(ショートカットキー)を使用不可にする方法は分かっています。
    F11キーを押すと、ナビゲーションウインドウが表示されますが、これをソフト内の全域にわたって表示不可にしたいのです。
    フォームにコードを書きこみ、F11を使用不可にはできます。

    ファンクションキーの使用不可は個々のフォームでしかできない(現在の私では)ので、全フォームで処理するとしても、
    クエリ画面では、F11が生き返ってしまいます。

    クイックアクセスツールバーで、ショートカットキーのチェックを外し使用不可にはできます(クエリ画面を含めソフト全体で可能)。
    しかし、これでは、エンドユーザーがこの方法でF11使用を復活させることができます。

    そうすると、テーブル等のデータ破損の可能性も出てきますし、データ保護の面からも好ましくありません。

    なので、
    1)ソフト全体にわたって、F11を使用禁止にする方法はありますか?
    2)F11を使用しても、「ナビゲーションウインドウ」が使用できなければ問題は起きないので、
    ナビゲーションウインドウを表示しないか、またはこれをロックする方法はありますか?

    質問、上記二点です。
    色々調べてやってみましたが、現在お手上げ状態です、よろしくお願いします。

    YKsaila



    • 編集済み yksaila 2016年8月26日 0:20
    2016年8月26日 0:15

回答

  • 一応、独力で、下記まで、たどり着きました。(一部、ネットでの情報がヒント)

    MDE画面でのナビゲーションウインドウ・ファンクションキー(ショートカットキー)を使用禁止にする方法:

    問題は、アクセス画面での左上の▼印(クイックアクセスツールバー)が使用できることでした(MDEでも)。
    これを使用不可にする方法を発見しました。
    やっとです!


    (Ⅰ)ホームタブを含めたリボン全体の非表示---<クイックアクセスツールバーを非表示にする(フォーム、クエリ等全表示画面で有効)>

    重要:MDBではシフトキーでナビゲーション ウインドウ表示可能だが、MDEでは表示しない。実験済。

    1. テーブル【USysRibbons】(システムオブジェクト?)を新規作成し、フィールド名[RibbonName][RibbonXml]を追加する。
    ※【ファイル】 → 【オプション】 → 【カレント データベース】の『ナビゲーション オプション』ボタンから、
     左下のシステム オブジェクトの表示にチェックを入れておかないと見えなくなります。
    RibbonName---テキスト型
    RibbonXml----テキスト型(フィールドサイズ/文字桁数:255)、またはメモ型

    2. 追加後、[RibbonName]に任意の名前(ここでの名前:HiddenName)を入れ、[RibbonXml]に以下を記入する。
    [RibbonXml]に、下記書き込み
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="true" />
    </customUI>

    3. これ以外には、コードは不要。


    4.一度保存して終了し、再度起動する
     【ファイル】 → 【オプション】 → 【カレント データベース】で開いたダイアログの、【リボン名】で、
    [RibbonName]で指定した名前が選択可能になっているので、(HiddenName)を選択して終了。
    終了後は、クイックアクセスツールバー非表示となる!
    しかし、MDBを(シフトキーを押しながら)開けば表示は可能。

    上記4.の一行目でのカレントデータベースの開き方(別方式):(左上の▼クイックアクセスツールバー → その他のコマンド → カレントデータベース → )


    5.MDBを(シフトキーを押しながら)開き、カレントデータベースでショートカットキーを無効にすればいい(チェックを外す)。
    ナビゲーション ウインドウのチェックを外すのも忘れないこと。。
    これで、再起動。

    この段階で、MDBではシフトキーでナビゲーションウインドウ表示可能だが、MDEでは表示しない(F11は機能しないし、ナビゲーション ウインドウも開かない)。

    <欠点>全てのファンクションキーやショートカットキーが使用不可になる---今後の課題。

    これで、当座の解決にはなる。

    YKsaila

    • 回答としてマーク yksaila 2016年9月1日 12:56
    2016年9月1日 7:27
  • 但し、MDEをShiftキーを押しながら開くと、ナビゲーションウインドウが開いてしまう。
    MDEを開くときに、Shiftキーを無効にする必要があるので;

    下記のFunctionを、Main_Menuの「Private Sub Form_Open(Cancel As Integer)」の中に入れること。
    つまり
    Private Sub Form_Open(Cancel As Integer)
    ---略---

    Call Shift_Key_No    'MDEでのshiftキー無効化

    ---略---
    End Sub


    下記は、モヂュール内に入れる。
    Public Function Shift_Key_No()  'Shiftキィー無効改()
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。

        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String

        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。

            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"

            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            End Select

    End Function


    これで、MDEはShiftキーを押しても変化なしとなる。

    YKSaila

    • 回答としてマーク yksaila 2016年9月1日 12:56
    2016年9月1日 12:56
  • 少し修正・改善しました。 (Ⅰ)と(Ⅱ)に、分かれます。

    MDE画面でのナビゲーションウインドウ・ファンクションキー(ショートカットキー)を使用禁止にする方法2:

    問題は、アクセス画面での左上の▼印(クイックアクセスツールバー)が使用できることでした(MDEでも)。

    (Ⅰ)ホームタブを含めたリボン全体の非表示---<クイックアクセスツールバーを非表示にする(フォーム、クエリ等全表示画面で有効)>

    重要:MDBではシフトキーでナビゲーション ウインドウ表示可能だが、MDEでは表示しない。実験済。

    1. テーブル【USysRibbons】(システムオブジェクト?)を新規作成し、フィールド名[RibbonName][RibbonXml]を追加する。
    ※【ファイル】 → 【オプション】 → 【カレント データベース】の『ナビゲーション オプション』ボタンから、
     左下のシステム オブジェクトの表示にチェックを入れておかないと見えなくなります。
    RibbonName---テキスト型
    RibbonXml----テキスト型(フィールドサイズ/文字桁数:255)、またはメモ型

    2. 追加後、[RibbonName]に任意の名前(ここでの名前:HiddenName)を入れ、[RibbonXml]に以下を記入する。
    [RibbonXml]に、下記書き込み
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="true" />
    </customUI>

    3. これ以外には、コードは不要。

    4.MDBを(シフトキーを押しながら)開けば表示は可能。
    この段階で、MDEをShiftキーを押しながら開くと、ナビゲーションウインドウが開いてしまうので、
    MDEを開くときに、Shiftキーを無効にする必要がある。→(Ⅱ)

    (Ⅱ)下記のFunctionを、Main_Menuの「Private Sub Form_Open(Cancel As Integer)」の中に入れること。
    つまり
    Private Sub Form_Open(Cancel As Integer)
    ---略---

    Call Shift_Key_No    'MDEでのshiftキー無効化

    ---略---
    End Sub


    下記を、モヂュール内に入れる。
    (1)Public Function Shift_Key_No()  'Shiftキィー無効
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。
        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String
        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。
            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"

            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            End Select

    ’追加コード-- ファンクションキー(ショートカットキー?)使用禁止措置
    ChangeProperty "AllowSpecialKeys", 1, False  
    End Function


    (2)Public Function ChangeProperty(strPropName As String, varPropType, varPropValue) As Integer
    On Error GoTo err_ChangeProperty

        Dim dbs As dao.Database, prp As dao.Property
        Const conPropNotFoundError = 3270
        Set dbs = CurrentDb
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
        Exit Function

    err_ChangeProperty:
        If Err = conPropNotFoundError Then ' プロパティが見つかりません。
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ChangeProperty = False ' 認識できないエラー。
            Exit Function
        End If
    End Function

    これで、MDEはShiftキーを押しても変化なしとなる、またファンクションキー(ショートカットキー?)も使用が禁止される。
    【カレント データベース】中の「ショートカットキーを無効にする」の欄のチェックが自動で外れる。
    一度目は表示するが、二度目以降はチェックが有っても、次回に自動で消えているはず。
    なので、わざわざクイックアクセスツールバーで【カレント データベース】を開く必要がなくなる。

    YKSaila


    • 回答としてマーク yksaila 2016年9月4日 2:44
    • 編集済み yksaila 2016年9月4日 2:46
    2016年9月4日 2:44
  • アクセスでのナビゲーションウインドウ表示の禁止法:

    今迄のものの訂正・削除、無用のもの等があります。

    作成・バグ等検査にあたっての<重要>注意事項:
    下記設定をした後、MDB(シフト無し)を最初に開くとナビゲーションウインドウが開くことがあります。
    これで失敗かと思ってしまいますが、でも、二度目以降は開かなくなるので目的達成です。
    もちろんシフトキーありでのMDBでは全て開きます。

    なお、前出のUSysRibbonsテーブル関係の設定は、無用となります。 テーブルは削除します。
    【カレント データベース】でのリボン名欄も空白に戻す。


    (A) まず、Public Function作成-- 下記二個のファンクションをを、モヂュール内に追加。
    ①Public Function Shift_Key_No()  'Shiftキィー無効
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。
        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String
        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。
            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"
            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            End Select

      '2014/09/04追加
      ChangeProperty "AllowSpecialKeys", 1, False    'ファンクションキー(ショートカットキー?)使用禁止措置
    End Function


    ②Public Function ChangeProperty(strPropName As String, varPropType, varPropValue) As Integer
    On Error GoTo err_ChangeProperty

        Dim dbs As dao.Database, prp As dao.Property
        Const conPropNotFoundError = 3270
        Set dbs = CurrentDb
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
        Exit Function

    err_ChangeProperty:
        If Err = conPropNotFoundError Then ' プロパティが見つかりません。
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ChangeProperty = False ' 認識できないエラー。
            Exit Function
        End If
    End Function

    (B)Private Sub Form_Open(Cancel As Integer)内への追加コード
    ’モジュールで、下記のChangePropertyやCall Shift_Key_Noを定義しておくこと。
    ChangeProperty "AllowSpecialKeys", 1, False    'ファンクションキー(ショートカットキー)使用禁止措置-- JewelDB指定のキーは使用可能
    Call Shift_Key_No    'MDEでのshiftキー無効化 これがないと、シフト付で開けばMDEでもナビゲーションウインドウが開いてしまう。

    DoCmd.ShowToolbar "Ribbon", acToolbarNo  'リボンは非表示(MDEで)、シフト付MDBでは表示
    '2016/8/24追加---略----
    DoCmd.SelectObject acForm, "", True
    DoCmd.RunCommand acCmdWindowHide

    【カレント データベース】中の「ショートカットキーを無効にする」の欄のチェックが自動で外れる。
    一度目は表示するが、二度目以降はチェックが有っても、次回に自動で消えているはず。


    (C)USysRibbonsテーブル関係の設定は削除してもOK。 テーブルも削除。
    【カレント データベース】でのリボン名欄も空白に戻す。


    (D)その代り、カレントデータベースでの指定は下記の通り。
    アクセスツールバー(左上の▼)→ その他のコマンド → 【カレント データベース】
    ①アプリケーション
    チェックがあるもの--ステータスバー、ウインドウを重ねて表示(丸印のチェック)、閉じるときに最適化、レイアウトビュー、データシート
              全ての画像データビットマット(アクセス2003以前への互換性--(丸印のチェック))
    ②ナビゲーション
    チェックがあるもの-- ウインドウ表示

    ③リボンとツールバー--すべてにチェック(リボン名欄は空白)
    後のチェック関連は省略

    これで、完結のはず

    YKsaila

    • 回答としてマーク yksaila 2016年9月11日 9:52
    2016年9月11日 9:52

すべての返信

  • 一応、独力で、下記まで、たどり着きました。(一部、ネットでの情報がヒント)

    MDE画面でのナビゲーションウインドウ・ファンクションキー(ショートカットキー)を使用禁止にする方法:

    問題は、アクセス画面での左上の▼印(クイックアクセスツールバー)が使用できることでした(MDEでも)。
    これを使用不可にする方法を発見しました。
    やっとです!


    (Ⅰ)ホームタブを含めたリボン全体の非表示---<クイックアクセスツールバーを非表示にする(フォーム、クエリ等全表示画面で有効)>

    重要:MDBではシフトキーでナビゲーション ウインドウ表示可能だが、MDEでは表示しない。実験済。

    1. テーブル【USysRibbons】(システムオブジェクト?)を新規作成し、フィールド名[RibbonName][RibbonXml]を追加する。
    ※【ファイル】 → 【オプション】 → 【カレント データベース】の『ナビゲーション オプション』ボタンから、
     左下のシステム オブジェクトの表示にチェックを入れておかないと見えなくなります。
    RibbonName---テキスト型
    RibbonXml----テキスト型(フィールドサイズ/文字桁数:255)、またはメモ型

    2. 追加後、[RibbonName]に任意の名前(ここでの名前:HiddenName)を入れ、[RibbonXml]に以下を記入する。
    [RibbonXml]に、下記書き込み
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="true" />
    </customUI>

    3. これ以外には、コードは不要。


    4.一度保存して終了し、再度起動する
     【ファイル】 → 【オプション】 → 【カレント データベース】で開いたダイアログの、【リボン名】で、
    [RibbonName]で指定した名前が選択可能になっているので、(HiddenName)を選択して終了。
    終了後は、クイックアクセスツールバー非表示となる!
    しかし、MDBを(シフトキーを押しながら)開けば表示は可能。

    上記4.の一行目でのカレントデータベースの開き方(別方式):(左上の▼クイックアクセスツールバー → その他のコマンド → カレントデータベース → )


    5.MDBを(シフトキーを押しながら)開き、カレントデータベースでショートカットキーを無効にすればいい(チェックを外す)。
    ナビゲーション ウインドウのチェックを外すのも忘れないこと。。
    これで、再起動。

    この段階で、MDBではシフトキーでナビゲーションウインドウ表示可能だが、MDEでは表示しない(F11は機能しないし、ナビゲーション ウインドウも開かない)。

    <欠点>全てのファンクションキーやショートカットキーが使用不可になる---今後の課題。

    これで、当座の解決にはなる。

    YKsaila

    • 回答としてマーク yksaila 2016年9月1日 12:56
    2016年9月1日 7:27
  • 但し、MDEをShiftキーを押しながら開くと、ナビゲーションウインドウが開いてしまう。
    MDEを開くときに、Shiftキーを無効にする必要があるので;

    下記のFunctionを、Main_Menuの「Private Sub Form_Open(Cancel As Integer)」の中に入れること。
    つまり
    Private Sub Form_Open(Cancel As Integer)
    ---略---

    Call Shift_Key_No    'MDEでのshiftキー無効化

    ---略---
    End Sub


    下記は、モヂュール内に入れる。
    Public Function Shift_Key_No()  'Shiftキィー無効改()
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。

        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String

        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。

            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"

            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            End Select

    End Function


    これで、MDEはShiftキーを押しても変化なしとなる。

    YKSaila

    • 回答としてマーク yksaila 2016年9月1日 12:56
    2016年9月1日 12:56
  • 先のコメントについての注:
    モヂュール内にChangePropertyファンクションがないなら、以下を追加しておく必要があります。

    Public Function ChangeProperty(strPropName As String, varPropType, varPropValue) As Integer
    On Error GoTo err_ChangeProperty

        Dim dbs As dao.Database, prp As dao.Property
        Const conPropNotFoundError = 3270
        Set dbs = CurrentDb
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
        Exit Function

    err_ChangeProperty:
        If Err = conPropNotFoundError Then ' プロパティが見つかりません。
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ChangeProperty = False ' 認識できないエラー。
            Exit Function
        End If
    End Function

    2016年9月4日 2:40
  • 少し修正・改善しました。 (Ⅰ)と(Ⅱ)に、分かれます。

    MDE画面でのナビゲーションウインドウ・ファンクションキー(ショートカットキー)を使用禁止にする方法2:

    問題は、アクセス画面での左上の▼印(クイックアクセスツールバー)が使用できることでした(MDEでも)。

    (Ⅰ)ホームタブを含めたリボン全体の非表示---<クイックアクセスツールバーを非表示にする(フォーム、クエリ等全表示画面で有効)>

    重要:MDBではシフトキーでナビゲーション ウインドウ表示可能だが、MDEでは表示しない。実験済。

    1. テーブル【USysRibbons】(システムオブジェクト?)を新規作成し、フィールド名[RibbonName][RibbonXml]を追加する。
    ※【ファイル】 → 【オプション】 → 【カレント データベース】の『ナビゲーション オプション』ボタンから、
     左下のシステム オブジェクトの表示にチェックを入れておかないと見えなくなります。
    RibbonName---テキスト型
    RibbonXml----テキスト型(フィールドサイズ/文字桁数:255)、またはメモ型

    2. 追加後、[RibbonName]に任意の名前(ここでの名前:HiddenName)を入れ、[RibbonXml]に以下を記入する。
    [RibbonXml]に、下記書き込み
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="true" />
    </customUI>

    3. これ以外には、コードは不要。

    4.MDBを(シフトキーを押しながら)開けば表示は可能。
    この段階で、MDEをShiftキーを押しながら開くと、ナビゲーションウインドウが開いてしまうので、
    MDEを開くときに、Shiftキーを無効にする必要がある。→(Ⅱ)

    (Ⅱ)下記のFunctionを、Main_Menuの「Private Sub Form_Open(Cancel As Integer)」の中に入れること。
    つまり
    Private Sub Form_Open(Cancel As Integer)
    ---略---

    Call Shift_Key_No    'MDEでのshiftキー無効化

    ---略---
    End Sub


    下記を、モヂュール内に入れる。
    (1)Public Function Shift_Key_No()  'Shiftキィー無効
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。
        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String
        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。
            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"

            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"

            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            End Select

    ’追加コード-- ファンクションキー(ショートカットキー?)使用禁止措置
    ChangeProperty "AllowSpecialKeys", 1, False  
    End Function


    (2)Public Function ChangeProperty(strPropName As String, varPropType, varPropValue) As Integer
    On Error GoTo err_ChangeProperty

        Dim dbs As dao.Database, prp As dao.Property
        Const conPropNotFoundError = 3270
        Set dbs = CurrentDb
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
        Exit Function

    err_ChangeProperty:
        If Err = conPropNotFoundError Then ' プロパティが見つかりません。
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ChangeProperty = False ' 認識できないエラー。
            Exit Function
        End If
    End Function

    これで、MDEはShiftキーを押しても変化なしとなる、またファンクションキー(ショートカットキー?)も使用が禁止される。
    【カレント データベース】中の「ショートカットキーを無効にする」の欄のチェックが自動で外れる。
    一度目は表示するが、二度目以降はチェックが有っても、次回に自動で消えているはず。
    なので、わざわざクイックアクセスツールバーで【カレント データベース】を開く必要がなくなる。

    YKSaila


    • 回答としてマーク yksaila 2016年9月4日 2:44
    • 編集済み yksaila 2016年9月4日 2:46
    2016年9月4日 2:44
  • アクセスでのナビゲーションウインドウ表示の禁止法:

    今迄のものの訂正・削除、無用のもの等があります。

    作成・バグ等検査にあたっての<重要>注意事項:
    下記設定をした後、MDB(シフト無し)を最初に開くとナビゲーションウインドウが開くことがあります。
    これで失敗かと思ってしまいますが、でも、二度目以降は開かなくなるので目的達成です。
    もちろんシフトキーありでのMDBでは全て開きます。

    なお、前出のUSysRibbonsテーブル関係の設定は、無用となります。 テーブルは削除します。
    【カレント データベース】でのリボン名欄も空白に戻す。


    (A) まず、Public Function作成-- 下記二個のファンクションをを、モヂュール内に追加。
    ①Public Function Shift_Key_No()  'Shiftキィー無効
    'mdbファイルはshift有効。mdeはshift無効にする。
    'ただし、一回ファイルをshift無効(なし)の状態で起動する必要がある!
    '(autoexecで起動時にマクロからこの関数を呼び出しているが、shiftを押されるとautoexecが無効になってしまう)
    '(autoexecからこの関数を一回でも実行すればあとはずっと有効。逆に、mdbファイルでshift無効にしてしまうと。修正が不可能になるので要注意!)
    'よって、mde化後、少なくとも一回shiftなしで起動してから配布すること。
        Dim varPass As Variant
        Dim str拡張子 As String
        Dim strMsg_1 As String
        Dim strMsg_2 As String
        varPass = CurrentDb.Name
        str拡張子 = Right(varPass, 3) '下三文字を取得します。
        strMsg_1 = "Shiftキィーが有効か、ファイルを再度立ち上げた後、有効になります。"
        strMsg_2 = "Shiftキィーが無効か、ファイルを再度立ち上げた後、無効になります。"

        Select Case str拡張子 'Shiftキィーを無効、有効にするための条件分岐。
            Case "mdb"
                ChangeProperty "AllowBypassKey", dbBoolean, True
                'MsgBox strMsg_1, , "管理者"
            Case "mde"
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            Case Else
                ChangeProperty "AllowBypassKey", dbBoolean, False
                'MsgBox strMsg_2, , "管理者"
            End Select

      '2014/09/04追加
      ChangeProperty "AllowSpecialKeys", 1, False    'ファンクションキー(ショートカットキー?)使用禁止措置
    End Function


    ②Public Function ChangeProperty(strPropName As String, varPropType, varPropValue) As Integer
    On Error GoTo err_ChangeProperty

        Dim dbs As dao.Database, prp As dao.Property
        Const conPropNotFoundError = 3270
        Set dbs = CurrentDb
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
        Exit Function

    err_ChangeProperty:
        If Err = conPropNotFoundError Then ' プロパティが見つかりません。
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ChangeProperty = False ' 認識できないエラー。
            Exit Function
        End If
    End Function

    (B)Private Sub Form_Open(Cancel As Integer)内への追加コード
    ’モジュールで、下記のChangePropertyやCall Shift_Key_Noを定義しておくこと。
    ChangeProperty "AllowSpecialKeys", 1, False    'ファンクションキー(ショートカットキー)使用禁止措置-- JewelDB指定のキーは使用可能
    Call Shift_Key_No    'MDEでのshiftキー無効化 これがないと、シフト付で開けばMDEでもナビゲーションウインドウが開いてしまう。

    DoCmd.ShowToolbar "Ribbon", acToolbarNo  'リボンは非表示(MDEで)、シフト付MDBでは表示
    '2016/8/24追加---略----
    DoCmd.SelectObject acForm, "", True
    DoCmd.RunCommand acCmdWindowHide

    【カレント データベース】中の「ショートカットキーを無効にする」の欄のチェックが自動で外れる。
    一度目は表示するが、二度目以降はチェックが有っても、次回に自動で消えているはず。


    (C)USysRibbonsテーブル関係の設定は削除してもOK。 テーブルも削除。
    【カレント データベース】でのリボン名欄も空白に戻す。


    (D)その代り、カレントデータベースでの指定は下記の通り。
    アクセスツールバー(左上の▼)→ その他のコマンド → 【カレント データベース】
    ①アプリケーション
    チェックがあるもの--ステータスバー、ウインドウを重ねて表示(丸印のチェック)、閉じるときに最適化、レイアウトビュー、データシート
              全ての画像データビットマット(アクセス2003以前への互換性--(丸印のチェック))
    ②ナビゲーション
    チェックがあるもの-- ウインドウ表示

    ③リボンとツールバー--すべてにチェック(リボン名欄は空白)
    後のチェック関連は省略

    これで、完結のはず

    YKsaila

    • 回答としてマーク yksaila 2016年9月11日 9:52
    2016年9月11日 9:52