「プログラムにコマンドを送信しているときに、エラーが発生しました。」となったらDDE無視をOFFに

数日前からエクセルをダブルクリックすると
「プログラムにコマンドを送信しているときに、エラーが発生しました。」
といったエラーになってしまう。

f:id:GARAPON:20200625225028p:plain
エラー

エクセルを一旦起動してからファイルから開いたり、ドラッグアンドドロップすればファイルは開くのだが
メールの添付はひらけなくなるし非常に不便。

対処は何かと調べてみたらすぐ見つかった。
Excel でコマンドをプログラムに送信するときにエラーが発生しました | Microsoft Docs

んでこの対処の中のこれをやるだけでOKでした!

  1. [ファイルオプション] を選択し > Optionsます。
  2. [詳細設定] を選択して [全般] セクションまでスクロールし、[全般] 領域の [動的データ交換 (DDE) を使用している他のアプリケーションを無視する] チェックボックスをオフにします。
  3. [OK] を選択します。


DDEはWindows2.0の頃の遺産でOLEやCOMにとってかわられているので、DDEを使用しているアプリケーションを無視するのは正しいと思うのですが、いまだにWindowsシェルの関連付けとかでは使われているので、そのDDE命令をエクセルが無視しちゃうということなんでしょうかね?
でもだとするとExcelの壮大なバグですよね。。。。


参考DDEをつかったいたずら

DDEが有効だとこんな悪さができます。ここでは電卓立ち上げているだけですが、ファイルひらいただけでCMD乗っ取れるので、実質なんでもできちゃう恐ろしい仕組みです。
binary-pulsar.hatenablog.jp