UDF (ユーザー定義のワークシート関数) を提供する Excel アドインを作成しました。
あるユーザーがこれらの関数を使用して自分のブックを別のユーザーに送信するか、アドインが異なるパスにインストールされている複数のコンピューターでブックを使用しようとするまで、すべて問題ありません。
パスの唯一の違いがドライブ文字であっても、別のコンピューターでブックを開くと、すべての UDF の前の数式に古い完全パスが表示され、数式はエラーを返します。
これに対処する 1 つの方法は、ワークブック内のすべての数式を検索して置換し、パスを空の文字列に置き換えることです。次に、数式は、現在のコンピューター上のアドインのパスに合わせてリセットされます。場合によっては、VBE に移動して CalculateFullRebuild を実行し、数式を機能させる必要があります。機能しますが、あまり技術的ではないユーザーに要求することは多く、ワークブックを頻繁に移動するユーザーにとって頻繁に行う必要があるのは面倒です。
また -- COM アドインにはこの問題がありますか? 私のアドインは xla です。私はそれについて興味がありますが、COM アドインは Macintosh Excel では動作せず、このアドインはクロスプラットフォームで動作する必要があるため、この場合は議論の余地があります。
アップデート:
リクエストに応じて、スクリーンショットを次に示します。
このスクリーンショットは、アドインを C:\Fred's Stuff\Fred's Excel Stuff\MyAddin.xla に配置した Fred が自分のブックを Martha に送信した場合にどうなるかを示しています。Martha は同じアドインを別のパス (C: \Martha's Files\Martha's Excel Files\MyAddin.xla で、Martha は Fred が送信したファイルを開きます。
マーサがパスを削除し、数式に「=MyUDF()」のみを残した場合、Excel は、マーサが配置したパスでマーサのコンピューター上の MyAddin.xla を検索します (マーサが以前に MyAddin.xla をアドインとして Excel にインストールしたと仮定します)。 )、数式を正しく解決します。