質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

Q&A

解決済

1回答

1027閲覧

Webで配布している、デジタル証明書を付けたExcelブックでマクロを有効にしたい

San

総合スコア8

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

0グッド

1クリップ

投稿2022/11/15 07:18

前提

厳密に言うとプログラムとは違うと思われますがご容赦ください。

Microsoft Excel(Office365)にVBAを使ったマクロプログラムを含めて、それをWeb(社内/特定顧客)経由で配布し利用しています。

夏頃にOfficeのアップデートにより、MOTW状態のExcelブック(.xlsm)ファイルを開こうとすると、
「信頼されていない~」
という表示と共にマクロが無効化されるようになりました。

回避方法はいくつかあり、その内の「マクロに電子証明書を付与する」という対応を実施しました。
電子証明書はOpenSSLで作成し、鍵ファイルなどは作成者の端末のストア「個人」にインポート。
利用者は証明書ファイルを「信頼されたルート証明機関」にインポートするという事だったため、そのようにしたのですが、想定通りにはならずにマクロが使えない状況でした。
(トラストセンターで「証明書付きのみ許可」の設定は実施済)

実現したいこと

  • ダウンロードしたExcelブック(.xlsm)のマクロを使用可能にしたい
  • oneDriveに置いて共有したい為、ダウンロードしての対応は避けたい

oneDriveから該当のExcelブックを「アプリで開く」としてExcelを起動し、そのままマクロを有効にして利用したいと考えています。
(10月前半くらいまではその運用で利用できていた)

証明書のインストールやExcelの設定変更などは可能ですが、信頼済のサイトに登録したり、信頼済フォルダを追加するなどダウンロードする事を前提とした対応は避けたいと考えています。
(複数のメンバーで共有し編集している為)
そのため、ダウンロードしてプロパティからセキュリティ項目へ「許可する」とするMOTW解除の操作も採用できません。

運用の観点からVBAマクロに電子証明書を付与し、利用端末に電子証明書をインポートするのが最善と考えています。

発生している問題・エラーメッセージ

VBAマクロに証明書を付与し、利用端末にも証明書をインポートしてもマクロが利用可能になりません。

試したこと

様々なサイトを調べる限り、証明書(.crt)は「信頼されたルート証明機関」に配置すれば良い事になっていますが、そこ(~証明機関)とは別に「信頼された発行元」ストアにも証明書をインポートしてみたところ、マクロは無効化されずに利用できるようになりました。

しかし、これで何故動作するようになったのかがわかりません。
証明書の作り方、配置(インポート)の仕方、それ以外のいずれか(あるいは全部)が悪いのだろうと思うのですが、原因の特定に至っておりません。
当面は証明書を2カ所に配置した状態で運用していく予定ですが、正しい状態での運用にしたいと考えています。

補足情報(FW/ツールのバージョンなど)

Microsoft Excel(MSO) バージョン:2210 ビルド:16.0.15726.20188
OpenSSL バージョン:Light-3.0.7
Windows 10/11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okakemetal

2022/11/15 08:29

ADサーバは使用されてますか? ADサーバを使用されているようでしたら、その辺のポリシー作って ユーザーがログインした時点で共通の証明書を利用する運用ができたような 気がします
San

2022/11/15 08:43

回答ありがとうございます。 残念ながらAD(Active Directory)サーバーなどの運用はしておりません。 しかし、確かにADサーバーなどでPC起動時に実行するスクリプトなどで何らかの対応が可能かもしれません。当面ADサーバーなどの運用は想定しておりませんが、採用する際には検討してみたいと思います。
okakemetal

2022/11/15 09:02

onedriveと記載されていましたね 失礼しました
guest

回答1

0

自己解決

結局の所、証明書ファイルを2つのストア(「信頼されたルート証明機関」と「信頼された発行元」)にインポートする事以外の解決方法は見つかりませんでした。

ただし、VBAに電子証明書を付与するやり方では、何かの拍子で証明書が消えてしまうケースがある事から、常にダウンロードしてMOTW属性を外す(プロパティから「許可する」か、信頼された保存先へ保存するなど)事で対応するのが、一番の近道のように思います。

投稿2022/11/30 04:35

San

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問