qii-yah
@qii-yah

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

エクセルの認証設定

Q&A

Closed

解決したいこと

エクセルの認証設定が上手くいきません。
ご存じの方、教えていただけます様、
よろしくお願い申し上げます。

●期待する動作は以下です。

(1)正常なライセンス認証
・Sheet1 のセル A2 に正しいライセンスキー (VALID_LICENSE_KEY) が記述されている場合、認証成功メッセージを表示し、ブックを利用可能にする。
・認証が成功した場合でも、UserForm3 が表示されるのは不要。

(2)ライセンス未登録または無効な場合
・UserForm3 を開いてライセンスキーを入力させる。
・入力後に正しいキーが提供されれば認証成功、シートを表示。
・正しいキーが提供されなければ、シートを隠し、ブックを閉じる。

(3)エラー発生の防止
・Sheet1 のセル A2 が空の場合でもエラーが発生せず、正常に未認証処理が行われる。

これらの<期待する動作>が実現できるように、以下3か所にソースコードを記述しました。
しかし、
UserForm3が表示され、正しいライセンスキーを入力すると
<ライセンス認証に成功しました。>というメッセージが表示され、一旦、ファイルが通常通り開きますが、
OKボタンをクリックすると
<ライセン認証が必要です。このブックは利用できません。>というメッセージが表示され、全てのシートが隠れ、
マクロの操作画面(編集画面)へも接続できない状況になります。(エクセル自体のシートが0の状態)となり
復活できない状況になります。

★UserForm3が表示され、正しいライセンスキーを入力できないときも、
<ライセン認証が必要です。このブックは利用できません。>というメッセージが表示され、全てのシートが隠れ、
マクロの操作画面(編集画面)へも接続できない状況になります。(エクセル自体のシートが0の状態)となり
復活できない状況になります。

0

1Answer

(エクセル自体のシートが0の状態)となり復活できない状況になります。

<標準モジュール>の最後のCloseWorkbook()によって、ワークブックがクローズされるからです。
Excelを一旦終了して、マクロを無効状態で当ワークブックを開き、ThisWorkbook.Close SaveChanges:=Falseをコメントにして(代わりにprintでも入れて)デバッグされてはどうでしょうか?

1Like

Comments

  1. UserForm3が表示され、正しいライセンスキーを入力すると
    <ライセンス認証に成功しました。>というメッセージが表示され、一旦、ファイルが通常通り開きますが、
    OKボタンをクリックすると
    <ライセン認証が必要です。このブックは利用できません。>というメッセージが表示され

    この原因は、次の if文において、isAuthenticated が false だからです。

            ' ユーザーフォームが閉じられた後、認証済みなら終了
            If isAuthenticated Then Exit Sub
    
  2. この原因は、次の if文において、isAuthenticated が false だからです。

    さらに、この原因は、

    <ThisWorkbook>のWorkbook_Open()と<標準モジュール>のSetAuthenticatedFlag()で宣言したisAuthenticatedはそれぞれ別物であるためです。

    同一実態を期待されていると思いますが、そのためには、両関数からisAuthenticatedの宣言を削除して、代わりに、<標準モジュール>の2行目に、次の1行を追加します。

    Global isAuthenticated As Boolean
    
  3. @qii-yah

    Questioner

    @nak435 さま

    引き続きアドバイスありがとうございます。
    今、少し混乱していますので
    明日、再度整理し、ご報告させていただきます。
    いつもありがとうございます。

  4. @qii-yah

    Questioner

    @nak435さま

    おはようございます。
    まず、現状の結果ですが、

    <(エクセル自体のシートが0の状態)となり復活できない状況になる。>
    現象はなくなりました!
    本当にありがとうございます!

    次に、

    ●この原因は、次の if文において、isAuthenticated が false だからです。
    ●さらに、この原因は、
    ●<ThisWorkbook>のWorkbook_Open()と<標準モジュール>のSetAuthenticatedFlag()で宣言したisAuthenticatedはそれぞれ別物であるためです。
    ●同一実態を期待されていると思いますが、そのためには、両関数からisAuthenticatedの宣言を削除して、代わりに、<標準モジュール>の2行目に、次の1行を追加します。
    ●Global isAuthenticated As Boolean

    ➡これらをすべて記述変更しましたら
    <Global isAuthenticated As Boolean>に対してエラーがでましたので
    この箇所を元に戻してみました。

    そうしますと、
    <ライセン認証が必要です。このブックは利用できません。>というメッセージが表示されますが
    このダイアログを閉じると通常のファイルに戻ります。

    ➡現時点での不具合は、
    ライセンスキーが正しくても、誤ていても最後に
    <ライセン認証が必要です。このブックは利用できません。>というメッセージが表示されるという状況です。

    これをなくすには、どうすれば宜しいでしょうか。
    本当に何度も申し訳ありません。

    念の為、以下に最新の記載コードを基準させていただきます。
    何卒よろしくお願い申し上げます。

    e.jpg

  5. @qii-yah

    Questioner

    @nak435さま

    本当にいつもありがとうございます。
    今朝投稿させていただきました上記の件ですが
    (➡現時点での不具合は、
    ライセンスキーが正しくても、誤ていても最後に
    <ライセン認証が必要です。このブックは利用できません。>というメッセージが表示されるという状況です。)

    落ち着いてみると、
    そもそもこの設定が不要だと気づき
    このメッセージをとりあえず、コメントにしましたら
    表示されなくなりました。

    今回も@nak435さまの的確で迅速なアドバイスのお蔭様で
    無事解決いたしました!
    本当にありがとうございます。

    質問をクローズさせていただきます。
    今後ともよろしくお願い申し上げます。

  6. <標準モジュール>の2行目に、次の1行を追加します。
    Global isAuthenticated As Boolean

    <Global isAuthenticated As Boolean>に対してエラーがでましたので
    この箇所を元に戻してみました。

    上記のスクショを見ると、SetAuthenticatedFlag()の中にGlobal isAuthenticated As Booleanを入れていますが、そうではなくて、<標準モジュール>の2行目に入れます。つまり、Option Expilcitの直ぐ下にです。

    解決済みであれば、読み捨ててください。

  7. @qii-yah

    Questioner

    @nak435さま

    引続きありがとうございます。
    私の知識レベルでは<エラー>がでなければ良しとしてしまっています。

    ●上記のスクショを見ると、SetAuthenticatedFlag()の中にGlobal isAuthenticated As Booleanを入れていますが、そうではなくて、<標準モジュール>の2行目に入れます。つまり、Option Expilcitの直ぐ下にです。

    ➡この通りする方がよいものでしょうか?
    今はエラーがでていませんが、後々エラーがでるのではと不安なのも事実なのです。
    もしよろしければお手すきの際にでもアドバイスいただければ幸いです。

    よろしくお願い申し上げます。

Your answer might help someone💌