Office関連

VBAで○○を禁止したい!・・・と思う前に。

Office系Q&Aサイトを見ているとたまに出てくるのがこの質問。

“VBAで○○を禁止(制御)したい!”

特に業務ではこういった要望が出てくることも多いのだろうと思います。

たしかに、マクロを使うとアプリケーションの機能を制限することができます。
たとえば、ExcelファイルのThisWorkbookに下記コードを設定すると、

Option Explicit

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  Cancel = True
End Sub

そのファイルではシート上で右クリックしてもメニューが表示されなくなり、たとえばリボンをカスタマイズして下記コードを設定すると、そのファイルでは上書き保存コマンドが無効になります。

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileSave" enabled="false" />
  </commands>
</customUI>

このように、コードを色々書くことでアプリケーションの機能を制御し、ユーザーの操作を限定させることはできます。

・・・が、この手の「○○禁止系」の処理は非常に大変です。

というのも、制御対象の項目が多い(右クリックメニュー、リボン、ツールバー(メニューバー)、ショートカットキー…etc)上、マクロで他ファイルから操作されたらどうするのか?、OOXMLファイル内のXMLを直接書き換えられたらどうするのか??・・・というように、起こり得る事態を考え出したらキリがなく、それらすべてに対応しようとすると、その分だけコストが掛かってしまうからです。

それならば、いっそのこと、

  1. ユーザーにファイルを弄られたくない。 → 保護機能でファイルを保護する、PDFファイルにして編集しづらくする。
  2. でも部分的にユーザーからの入力を受け付けたい。 → ファイルに制限を掛けて一部以外はファイルを保護する。

上記のようにVBAで何とかするのを止めて、標準機能である保護機能や制限機能で対応した方が、余分な手間が掛からないのではないかと思います。

メンテナンスの面を考えても、API等を駆使した凝ったコードで制限するより遥かに簡単で楽にファイルの面倒をみることができます。
(特に業務においては容易にメンテナンスできるようにしておいた方が、要らぬトラブルを起こさずに済みます。)

というわけで、

“VBAで○○を禁止(制御)したい!”

・・・と思う前に、まずはアプリケーションの保護や制限といった標準機能で何とかできないかを考えてはどうか?という私見をごちゃごちゃと書いてみました。

[リボン・カスタマイズ]カスタムタブを共有する。前のページ

2014年8月の人気記事次のページ

関連記事

  1. Office関連

    「IEを自在に操る Excel VBAプログラミング入門」レビュー

    ※ 下記レビューはあくまでも個人的な感想です。2013年9月2…

  2. Office Scripts

    Office Scripts機能によってWeb版Officeの操作を自動化する

    前回、Ignite 2019で発表されたPower Automate(…

  3. Office関連

    PowerPoint 2013ではプレゼンテーションをmp4形式で保存できるようになりました。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  4. Office関連

    ヘッドレス ChromeをSeleniumBasicで動かしてみました。

    Chromeがヘッドレスモードに対応した頃、Seleniumで操作した…

  5. Office関連

    指定したスライドにユーザー設定レイアウトを適用するPowerPointマクロ

    PowerPointにはオリジナルのレイアウト(ユーザー設定レイアウト…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP