ビデオ: 【Microsoft Digital Trust Summit 2019】企業のアクセス制御を突破する最新の攻撃手法と対策のご紹介 - 脅威可視化アセスメントで見えてきたセッション管理の重要性 2024
Excelでマクロを使用するには、ユーザーがマクロを有効にする必要があります。つまり、Excelで環境内でマクロを実行する権限を与える必要があります。マクロを有効にするには、数式バーの上にポップアップするセキュリティ警告の[コンテンツを有効にする]ボタンをクリックします。
結論は、世界中のすばらしいマクロを書くことができるということですが、ユーザーがマクロを有効にしない限り実行されません。これは質問をする。ユーザーはマクロを有効にすることができますか?答えは「はい」です - 少しトリッキーです。
<! - 1 - >そのアイデアは比較的単純です。たとえば、STARTという名前のシートを作成します。そのシートには、マクロを有効にする必要があるという簡単な警告だけが含まれています。その後、そのSTARTシート以外のブック内のすべてのシートを非表示にします。最後に、ブックを開いたときにすべてのシートを非表示にする簡単なマクロを作成します。
この時点で、ワークブックがOpenedになっているとき、Excelはユーザーにマクロを有効にするよう求めます。すべてのユーザーには開始シートが表示されるため、強制的にユーザーが実行されます。他のシートは隠されます!
<!このテクニックを動作させるには、ワークブックを閉じるときにSTARTシートを除くすべてのマクロと、ワークブックを開くときにSTARTシートを除くすべてを非表示にするマクロの2つのマクロが必要です。まず、ワークブックを閉じるときに起こる必要のある操作に取り組む。 :
キーボードでALT + F11キーを押してVisual Basic Editorをアクティブにします。
-
プロジェクトウィンドウでプロジェクト/ブック名を見つけて、その横のプラス記号をクリックしてすべてのシートを表示します。
-
-
イベントドロップダウンボックスでBeforeCloseイベントを選択します。
-
次のコードを入力または貼り付けます。
-
Private Sub Workbook_BeforeClose(Boolean as Cancel)ステップ1:変数をDimws As Worksheetとして宣言するステップ2:開始シートシートの解除( "START")。 Visible = xlSheetVisible 'ステップ3:ThisWorkbookの各ワークシートのすべてのワークシートのループを開始します。ワークシートのステップ4:ワークシート名を確認する。名前 "START" Then 'ステップ5:シートを非表示にします。 Visible = xlVeryHidden End If '手順6:次のワークシートにループする次のws'手順7:ブックのActiveWorkbookを保存します。 Save End Sub
ステップ1では、wsというオブジェクトを宣言し、ループするワークシートごとにメモリコンテナを作成します。
ステップ2では、STARTシートが表示されていることを確認します。
手順3では、このワークブックのすべてのワークシートを評価することをExcelに伝えるループを開始します。
ステップ4では、名前STARTと現在ループしているシートを単純に比較します。この手順では、次に来る操作がSTARTシートを除くすべてのシートに適用されます。
シート名が異なる場合は、ステップ5でxlVeryHiddenプロパティを使用してシートを非表示にします。このプロパティはシートを非表示にするだけでなく、ユーザーがユーザーインターフェイスを使用してシートを非表示にするのを防止します。
手順6で次のシートを取得するためにループバックします。
手順7で、すべてのシートが評価された後、マクロはブックを保存して終了します。
ブックを開くときに発生する必要があるすべてのアクションを処理するマクロを作成する必要があります。
Alt + F11キーを押してVisual Basic Editorをアクティブにします。
-
プロジェクトウィンドウで、プロジェクト/ワークブックの名前を探し、その横のプラス記号をクリックしてすべてのシートを表示します。
-
ThisWorkbookをクリックします。
-
[イベント]ドロップダウンボックスで、[開く]イベントを選択します。
-
次のコードを入力または貼り付けます。
-
Private Sub Workbook_Open() 'ステップ1:変数を宣言します。ワークシートとして使用する'ステップ2:ThisWorkbook内のすべてのワークシートをループします。ワークシートのステップ3:すべてのワークシートを再表示します。 Visible = xlSheetVisible 'ステップ4:次のワークシートにループする次のステップ'ステップ5:シートの開始シートを非表示にする(「START」)。 Visible = xlVeryHidden End Sub
ステップ1では、ループするワークシートごとにメモリコンテナを作成するためにwsというオブジェクトを宣言します。
手順2では、このワークブックのすべてのワークシートを評価することをExcelに伝えるループを開始します。
ステップ3では、現在ループしているシートの表示を解除します。この手順では、各シートが表示されるたびにすべてのワークシートを効果的に表示します。
手順4で次のシートを取得するためにループバックします。
すべてのシートが表示されたら、手順5でSTARTシートが非表示になります。繰り返しますが、xlVeryHiddenプロパティを使用すると、ユーザーはユーザーインターフェイスを使用してシートを手動で再表示できなくなります。
両方のマクロが実装された後、ユーザーがマクロを有効にした場合にのみ機能するワークブックが作成されます。