0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Officeにおける共有サーバー上のマクロのブロックとmklinkによる回避

Last updated at Posted at 2025-06-08

はじめに

Microsoft Officeアプリケーションは、セキュリティ上の理由から、インターネットからダウンロードされたファイルや、信頼されていない場所にあるファイルに含まれるマクロの実行をブロックすることがあります。これは、悪意のあるマクロからシステムを守るための重要な機能です。しかし、企業の共有フォルダなど、信頼できる内部ネットワーク上のファイルでも、特定の条件によってはマクロがブロックされてしまうことがあります。

特に、ディレクトリ名にIPアドレスを含む共有フォルダ上のVBAファイルは、Officeのセキュリティ設定によってマクロがブロックされやすいケースがあります。本記事では、この問題に対して、コマンドプロンプトのmklinkコマンドを用いて「エイリアス」(シンボリックリンクまたはジャンクション)を作成することで、マクロのブロックを回避できる方法を具体的に説明します。


Officeのマクロセキュリティとブロックの背景

Officeアプリケーションは、ファイルがどこから来たのか(インターネット、ローカルイントラネットなど)や、そのファイルがどこに保存されているのか(信頼済みドキュメント、信頼済み場所など)に基づいて、マクロの実行を許可するかどうかを判断します。

ファイルパスが「\\192.168.1.100\共有フォルダ」のようにIPアドレスで指定されている場合、Officeはこれをインターネットに近いと認識したり、特定のセキュリティポリシーを適用したりして、マクロをブロックすることがあります。これはセキュリティを厳しくするための措置ですが、正当な利用においては不便を感じる原因となります。


mklinkによるエイリアス作成でブロックを回避する仕組み

mklinkコマンドは、Windowsのコマンドプロンプトでシンボリックリンクジャンクションと呼ばれるエイリアスを作成するものです。これらは通常のショートカットファイル(.lnk)とは異なり、OSがファイルの実体として透過的に扱います。

mklinkで作成されたエイリアスを通してファイルを開くと、Officeアプリケーションは、エイリアスが指すローカルパスを認識します。これにより、元のIPアドレスを含むネットワークパスが直接参照されることなく、Officeはエイリアスをローカルドライブにあるファイルとして扱い、マクロのブロックを回避できると考えられます。


mklinkによるエイリアス作成手順

特定の共有フォルダ上のVBAファイルのエイリアスをローカルに作成し、Officeのマクロブロックを回避する具体的な手順を説明します。

前提条件

  • エイリアスを作成したいVBAファイルが存在する共有フォルダのネットワークパス。 例: \\192.168.1.100\SharedVBA\MyMacro.xlsm
  • エイリアスを作成するローカルパス。 例: C:\OfficeMacros (事前に作成しておくことを推奨します)
  • 管理者権限のあるコマンドプロンプト

手順

  1. コマンドプロンプトを管理者として実行します。

    • Windowsのスタートメニューを右クリックし、「ファイル名を指定して実行」を選択します。
    • cmdと入力し、Ctrl + Shift + Enterを押して、管理者権限でコマンドプロンプトを開きます。または、スタートメニューの検索バーに「cmd」と入力し、「コマンドプロンプト」を右クリックして「管理者として実行」を選択します。
  2. エイリアスを作成するコマンドを入力します。

    • ここでは、シンボリックリンクを使用してファイルへのエイリアスを作成する例を示します。
mklink "C:\OfficeMacros\MyMacro.xlsm" "\\192.168.1.100\SharedVBA\MyMacro.xlsm"
    • コマンドの解説:

      • mklink: シンボリックリンクを作成するコマンドです。
      • "C:\OfficeMacros\MyMacro.xlsm": 作成したいエイリアスのローカルパスとファイル名です。
      • "\\192.168.1.100\SharedVBA\MyMacro.xlsm": リンク先の元のファイルパスです。

共有フォルダ全体へのエイリアス(ジャンクション)を作成する場合の例: 共有フォルダ全体をローカルにエイリアスしたい場合は、ジャンクションを使用します。

mklink /j "C:\LocalSharedVBA" "\\192.168.1.100\SharedVBA"
    • /j: ジャンクションを作成するためのオプションです。
  1. コマンド実行後、成功メッセージを確認します。

    • 成功すると、「C:\OfficeMacros\MyMacro.xlsm のシンボリック リンクが \\192.168.1.100\SharedVBA\MyMacro.xlsm に作成されました」のようなメッセージが表示されます。
  2. 作成されたエイリアスからVBAファイルを開きます。

    • エクスプローラでC:\OfficeMacrosを開くと、MyMacro.xlsmというファイルが表示されています。
    • このエイリアスファイルを開くと、IPアドレスを含むネットワークパスにあるVBAファイルが、Officeにマクロブロックされずに開かれるはずです。

注意事項

  • 管理者権限: mklinkコマンドの実行には管理者権限が必要です。
  • パスの正確性: リンク元とリンク先のパスは正確に指定してください。
  • セキュリティへの影響: この方法は、Officeのマクロブロックを回避するためのものであり、セキュリティ上のリスクを完全に排除するものではありません。マクロの内容を信頼できるものか、事前に十分確認することが重要です。
  • Officeのバージョンと更新: Officeのバージョンやセキュリティ更新プログラムによっては、この回避策の有効性が将来的に変更される可能性があります。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?