SharePoint OnlineでExcelのマクロが動かない・機能しない主な原因
ExcelマクロがSharePoint Onlineで期待通りに動作しない場合、その原因は主にセキュリティ設定、ファイル保存場所の特性、Excel Onlineの機能制限、そしてVBAコード自体にあります。
1. セキュリティ設定によるブロック(最も一般的な原因)
Excelマクロは、悪意のあるプログラムの実行に利用される可能性があるため、Microsoftは厳重なセキュリティ対策を講じています。
- 原因A:信頼できる場所として登録されていない:SharePoint OnlineからダウンロードしたExcelファイルや、ネットワークドライブから開いたファイルは、既定では「信頼できる場所」として認識されません。そのため、マクロの実行がブロックされます。
- 原因B:セキュリティ警告バーが表示されるが、有効化していない:ファイルを開いたときに、画面上部に黄色のセキュリティ警告バー(「マクロが無効にされました」など)が表示されますが、これを見落としたり、「コンテンツの有効化」をクリックしなかったりすると、マクロは動きません。
- 原因C:組織のグループポリシーによるブロック:企業によっては、セキュリティ上の理由から、管理者(IT部門)が特定の場所からのマクロ実行を制限したり、すべてのマクロ実行を強制的に無効化するグループポリシーを設定している場合があります。
2. Excel Online(Web版Excel)で開いている
SharePoint上のExcelファイルは、既定でWebブラウザ上のExcel Onlineで開かれることがあります。
原因: Excel OnlineはVBAマクロの実行機能を持っていません。Webブラウザで開いている限り、マクロは一切動作しません。
3. ファイルの保存形式が正しくない
マクロを含むExcelファイルは、特定のファイル形式で保存する必要があります。
- 原因: マクロが含まれているにも関わらず、
.xlsx(マクロなしブック)形式で保存してしまっている場合、マクロコードは失われます。
4. VBAコードがネットワークパスや特殊な参照に依存している
VBAコード内で、ローカル環境に特化した処理や、ネットワークドライブへの直接アクセスを行っている場合があります。
- 原因A:ローカルパスやUNCパスへの直接参照:C:\Users\…\Desktop\data.xlsx や \\Server\Share\file.txt のように、ローカルのCドライブや特定のサーバーパスを直接指定している場合、SharePointからはアクセスできません。
- 原因B:ネットワーク速度や安定性の問題:SharePointからのファイルの読み書きは、ローカルディスクに比べてネットワークの速度や安定性の影響を受けやすいです。頻繁な読み書きや大きなファイルを扱うマクロは、タイムアウトエラーなどを起こす可能性があります。
- 原因C:外部アドインやDLLの参照:VBAコードが、パソコンにインストールされている特定のCOMアドインやDLLファイルを参照している場合、SharePoint上で開いたExcelではそれらの参照が解決できず、エラーになります。
5. VBAコードがSharePointのURLやファイルパスを正しく扱えていない
SharePoint上のファイルパスは、一般的なローカルパスとは形式が異なります。
原因: VBAコード内で、SharePoint上のファイルを開いたり保存したりする際に、https://yourcompany.sharepoint.com/sites/YourSite/Shared Documents/Folder/File.xlsxのような正しいURL形式ではなく、誤ったパスを指定している場合があります。
文字化けの具体的な対策を試してみよう!
原因に応じて、いくつか試せる対策があります。簡単なものから順番に試してみるのがおすすめです。
対策1:必ず「デスクトップアプリで開く」を選択する(最重要!)
Excel Onlineではマクロが動きません。まずはこれを徹底しましょう。
やり方
- SharePoint上でExcelファイルを開く際、ブラウザの画面上部にある「編集」ボタンの横のドロップダウンメニューから、「デスクトップアプリで開く」または「編集」を選びます。
- ファイルがパソコンのデスクトップ版Excelアプリケーションで開かれていることを確認します。
ポイント: これがマクロを実行する上での大前提です。Webブラウザ(Excel Online)で開いている限り、VBAマクロは絶対に動作しません。
対策2:ファイルを「信頼できる場所」として登録する(セキュリティ警告が出ないようにする)
マクロのセキュリティ警告バーが表示されなくなることで、毎回「コンテンツの有効化」をクリックする手間を省き、マクロが自動で実行されるようになります。
やり方
問題のExcelファイルが保存されているSharePointのフォルダーURLをコピーします。
SharePoint上で該当のフォルダーを開き、ブラウザのアドレスバーに表示されているURL(例: https://yourcompany.sharepoint.com/sites/YourSite/Shared%20Documents/YourFolder/)をコピーします。
デスクトップ版Excelを開き、設定を変更します。
- Excelの「ファイル」タブ → 「オプション」 → 「トラストセンター」 → 「トラストセンターの設定」をクリックします。
- 「信頼できる場所」を選び、「新しい場所の追加」をクリックします。
- コピーしたSharePointのフォルダーURLを貼り付け、「この場所のサブフォルダーも信頼する」にチェックを入れて「OK」をクリックします。
Excelを一度閉じて、再度SharePointから該当のExcelファイルを「デスクトップアプリで開く」で起動し、セキュリティ警告バーが表示されないか確認します。
ポイント: この設定は、マクロのセキュリティレベルを下げることになるため、信頼できるSharePointサイトやフォルダーのみを登録するようにしてください。全社的な設定はIT部門に相談しましょう。
対策3:ファイルを「マクロ有効ブック」形式で保存し直す
誤ってマクロが保存されない形式で上書き保存してしまった可能性があります。
- デスクトップ版Excelで問題のファイルを開きます。
- 「ファイル」タブ → 「名前を付けて保存」を選択します。
- 「ファイルの種類」のドロップダウンメニューで、「Excel マクロ有効ブック (*.xlsm)」を選んで保存し直します。
ポイント: これを怠ると、せっかく書いたマクロが保存されません。マクロが含まれるブックは必ず .xlsm 形式で保存しましょう。
対策4:VBAコード内のパス指定を見直す(ネットワークパス依存の場合)
VBAコードがローカル環境や特定のネットワークパスに依存していると、SharePoint上では動きません。
やり方A:相対パスを使う:
参照しているファイルが、マクロのあるExcelファイルと同じフォルダーや、その中の特定のサブフォルダーにある場合、相対パスで指定します。
ThisWorkbook.Path & “\SubFolder\data.xlsx” のように指定すれば、マクロブックの保存場所が変わっても対応できます。
やり方B:OneDrive同期を活用する:
SharePointのドキュメントライブラリをOneDrive同期でパソコンに同期設定します。
ポイント: VBAコードからは、同期されたローカルフォルダーのパス(例: C:\Users\あなたのユーザー名\組織名\SharePointサイト名 - ドキュメントライブラリ名\ファイル名.xlsx)を直接指定します。OneDriveクライアントがバックグラウンドでSharePointとの同期を処理してくれるため、VBA側でSharePointの認証やWebパスを意識する必要がなくなります。これが最も安定した解決策です。
やり方C:SharePointのURLを正しく使う:
VBAからSharePoint上のファイルを直接操作したい場合、Workbooks.Open “https://yourcompany.sharepoint.com/sites/YourSite/Shared%20Documents/Folder/File.xlsx” のように、完全なHTTP/HTTPSのURL形式で指定します。
注意点: ただし、これを行うには、VBAがSharePointの認証をクリアする必要があります。前述の通り、モダン認証(MFA)環境ではVBA単体でこれは非常に困難です。匿名アクセス可能なファイルなど、認証が不要なケースに限られます。
対策5:外部アドインやDLLの参照を解除または代替する
VBAコードが特定の外部コンポーネントに依存していると、それがパソコンにインストールされていない場合や、SharePoint経由で開いたExcelからアクセスできない場合にエラーになります。
やり方
- VBAエディタ(Alt + F11)を開き、「ツール」メニュー → 「参照設定」を確認します。
- 「参照不可」と表示されている項目があれば、そのチェックを外します。
- その参照に依存しているVBAコードを、Excelの組み込み機能やVBA標準の機能で代替できないか検討します。
ポイント: 外部アドインやDLLへの依存は、マクロの移植性を低下させるため、可能な限り避けるのが良いでしょう。
問題を未然に防ぐための予防策
問題を解決するよりも、最初から発生させない方が効率的です。以下の点を心がけましょう。
1. OneDrive同期を積極的に活用する
最も推奨される方法です。
- 活用方法: SharePointのドキュメントライブラリを、必要なPCにOneDrive同期で同期設定しておきましょう。
- メリット: VBAはローカルのパスを操作するだけでよく、SharePointの認証やWebパスを意識する必要がなくなります。ファイル名の文字化けも回避でき、常に最新のファイルで作業できます。
2. ファイル名には日本語や特殊文字を極力使わない
簡単なことですが、非常に効果的な予防策です。
推奨: ファイル名には、半角英数字、ハイフン(-)、アンダースコア(_)のみを使用するルールをチーム内で徹底しましょう。
3. マクロを含むブックは必ず「.xlsm」形式で保存する
マクロを含むブックの標準形式です。
徹底: 保存する際、必ず「Excel マクロ有効ブック (*.xlsm)」のファイル種類を選びましょう。
4. Excel Online(Web版Excel)の機能制限を理解する
Excel OnlineではVBAマクロが動かないことを覚えておきましょう。
使い分け: SharePoint上のファイルでも、VBAマクロを使う必要がある場合は、必ず「デスクトップアプリで開く」を選択しましょう。単純な閲覧や簡単なデータ入力であればExcel Onlineを使う、という使い分けが重要です。
まとめ
SharePoint OnlineでExcelマクロが動かない・機能しない原因は、主にセキュリティ設定、Excel Onlineの機能制限、そしてVBAコードの記述方法にあります。
主な原因と対策の要点
- Webブラウザ版(Excel Online)で開いている: これはマクロが動きません。必ずデスクトップアプリで開くことが大前提です。
- セキュリティでブロックされている: マクロを含むExcelファイルが保存されているSharePointのフォルダーを、Excelの「信頼できる場所」に登録しましょう。
- ファイル形式が
.xlsxになっている: マクロを含むブックは必ず.xlsm形式で保存し直しましょう。 - VBAコードがローカルパスに依存している: OneDrive同期機能を使ってファイルをローカルに同期し、VBAからはその同期されたフォルダーのパスを参照するのが、最も安定した解決策です。
これらの対処法と予防策を実践することで、皆さんのExcelマクロがSharePoint Onlineでも安定して動作し、業務の自動化と効率化をさらに進めることができるはずです。もし解決しない場合は、組織のIT部門に、マクロに関するグループポリシーやSharePointの特殊な設定がないか確認することも重要です。

