SharePointにファイルを移したら全てのExcelマクロが壊れた。原因と3つの脱出策

本記事にはプロモーション(アフィリエイトリンク)を含みます。

SharePoint移行が招いたVBAパニック

それは、ある日の朝一番の出来事でした。デスクの内線電話が、慌ただしく鳴り響きました。私はすぐに受話器を取りました。相手は営業部の担当者の方です。担当者はとても慌てた様子で話していました。内容は「マクロが動かなくなった」という相談です。原因はすぐに判明しました。

昨日のうちに、全社的なデータ移行が行われたからです。長年使ったファイルサーバーは廃止されました。そして、SharePointへと完全に移ったのです。情報システム部門からは、一通のメールが届いていました。「データの移行は無事に完了した」という報告です。

しかし、現場の業務を支えていたのは、数百ものExcel VBAでした。それらが参照していたのは、旧サーバーの絶対パスだったのです。

月曜日の朝9時のことです。自分の部署だけでも、20件以上のエラー報告が届きました。私はVBAのエディタを開きました。画面には黄色いハイライトが見えます。「Workbooks.Open」のコードが目に飛び込んできました。そして、そこには古いサーバーのパスが記されています。

ファイルが存在しないという、実行時エラーの画面です。1004という番号のダイアログが並びます。そして、エラー画面がデスクトップを埋め尽くしていきました。私は冷や汗でマウスが滑ったことを覚えています。胃が重く沈み込んでいくような感覚がありました。その時の記憶は、今でも鮮明に残っています。

VBAとSharePoint URL、業務停止

まず、VBAという言語の特性について説明します。VBAはWeb上のURLを直接処理するのが苦手です。そのような構造をしています。SharePointのURLは「https://」から始まります。つまり、これはWebの世界における住所です。一方で、VBAは「\\」から始まる形式を好みます。

これはWindowsネットワーク上の住所です。この形式しか理解できないVBAにとっては、大問題でした。ファイルが突然、異次元へ消えたのも同然の状態です。現場は大きなパニックに陥りました。業務は完全に停止してしまいました。社員たちは手作業での集計を強いられています。

現場の不安な気持ちは、一気に高まっていました。

VBAマクロの3大エラー原因

私は障害の波に飲み込まれそうになりました。急いでマクロの改修に取り掛かります。しかし、焦ってコードを書き換えてはいけません。事態をさらに悪化させる恐れがあるからです。まずはエラー画面を一つずつ確認しました。丁寧に状況を見ていきます。すると、発生している不具合には法則がありました。大きく分けて、3つのパターンに分類できたのです。

SharePoint移行とVBAの3つの壁

一つ目は、パスの不一致によるエラーです。これが最も頻繁に発生した事象でした。前述の通り、VBAは特殊な階層を解釈できません。そのため、「https://」から始まるライブラリに対応できないのです。このメカニズムが、エラーの主な原因でした。二つ目は、環境に依存して発生するエラーです。

ActiveXコントロールなどの参照に関わります。SharePoint上から直接Excelを開くと、問題が起きます。ブラウザの保護ビューが原因となります。また、一時ファイルの扱いも関係しています。これらは旧ファイルサーバーとは仕組みが異なります。

そのため、外部ファイルの読み込みが拒否されるのです。

認証と権限によるアクセスの拒否

三つ目は、権限とセッションに関する壁です。実は、SharePointは、高度な制御を行っています。Azure ADによる認証が行われているからです。そのため、VBAのコード自体に問題がない場合でも、エラーは起きます。マクロを実行する際に、認証情報を渡せません。そのような仕組みが備わっていないからです。その結果、サーバー側からアクセスを拒否されてしまいます。

結局、全社で動いていたVBAは300個を超えていました。SharePointへの移行により、その多くが停止したのです。原因を見極めずに、パスだけを修正してはいけません。なぜなら、本来は問題のなかった設定まで、壊す危険があるからです。まずは表示されているダイアログを読みましょう。エラーメッセージを一つずつ、冷静に読み解くことが大切です。

OneDrive同期パス 共有利用の落とし穴

業務を再開させる必要があります。私はまず、即効性のある応急処置を探りました。SharePointのファイルを扱う、手軽な方法があります。それは、PCのローカル環境に同期を設定することです。OneDriveアプリを使えば、簡単に同期ができます。

同期の設定を行うと、クラウドのファイルが配置されます。いわば、ローカルのディスク上に、仮想的に置かれる仕組みです。パスは「C:\Users\[氏名]\OneDrive」となります。VBAから見れば、単なるCドライブ内のファイルと同じです。既存のコードのパス部分を、この場所に置換しました。

すると、驚くほどあっさりとマクロは動き出しました。ファイルを開くことも、保存することもスムーズです。そして、処理はエラーなく完了しました。一見すると、これは完璧な解決策に思えました。

VBA・Pythonをもっと本格的に学ぶなら

VBAやPythonを実務レベルまで引き上げたい方には「侍エンジニア」がおすすめです。マンツーマン指導・オーダーメイドカリキュラムで、文系出身でも挫折しにくい環境が整っています。無料カウンセリングだけでも学習ロードマップが明確になります。

侍エンジニア 無料カウンセリングを予約する →

環境依存パスによる共有マクロ失敗

一方で、失敗もありました。私は同期パスに書き換えたマクロを配布しました。部署の共有フォルダに置き、チャットで周知します。「これで動きます」と自信を持って伝えました。しかし、5分後には返信が相次ぎました。「パスが見つかりません」というエラー報告です。よく考えれば、当然の結果でした。

パスの中に含まれる「氏名」の部分に注目してください。実は、この名前は、社員ごとに異なっています。自分のPCで動くマクロが、同僚のPCで動くはずはありません。

この手法は、自分一人で使うマクロなら有効です。しかし、複数人で共有するツールには適していません。コード内に、ユーザー名を取得する処理が必要になります。パスを動的に組み立てる複雑な記述が必要です。その結果、かえってメンテナンスの難易度を上げました。運用の手間が増えてしまったのです。

SharePointドライブでマクロ運用、再接続の壁

属人性を排除する方法を模索しました。全員の環境でマクロを動かすための、妥協案があります。それが、ドキュメントライブラリを登録する方法です。ネットワークドライブとして、認識させます。

SharePointは、WebDAVという仕組みをサポートしています。これを利用すると、URLをドライブ文字に変えられます。「Z:」や「S:」といった形式への割り当てが可能です。私は情報システム部門に相談を行いました。グループポリシーを使い、全社員のPCに適用してもらいます。「特定のサイトをZドライブとする」という設定です。これによって、一括での設定適用が実現しました。

Zドライブ化:運用効率と再起動の壁

設定の展開からパスの置換まで、時間がかかりました。実働で丸2日ほどの作業となっています。これにより、VBAのコード修正は一回で済みました。すべてのパスを「Z:\share\data.xlsx」のように書き換えます。これだけで、旧サーバー時代と同じ感覚で運用できました。

社員一人ひとりのパスの差異も、これなら吸収できます。権限エラーについても、WebDAVが処理してくれました。ただ、この方法にも大きな弱点がありました。PCを再起動するたびに、接続が切れてしまうのです。その結果、ドライブに赤いバツ印がつく現象が、頻繁に起きました。

その都度、エクスプローラーを開く必要があります。Zドライブをダブルクリックして、認証を通さなければなりません。この作業を忘れると、マクロは再び停止します。「パスが存在しません」というエラーが出てしまうのです。毎朝のこの作業が、新たな負担となりました。

VBA卒業、PythonでSharePoint自動化

毎日手動で再接続を行う運用には、疑問を感じました。要するに、業務効率化ツールとしては、本末転倒な状態です。Microsoftがセキュリティを強化する可能性もあります。そのたびに仕組みが変わり、苦労するでしょう。いつかこの暫定策も、使えなくなる日が来るはずです。そこで、私は一つの決断を下しました。

古い技術の延命に見切りをつけることにしたのです。現代的なアプローチへと、大きく舵を切りました。これが、VBAからの卒業を決めた瞬間です。

Pythonには、非常に強力なライブラリがあります。「office365-rest-python-client」という名前です。SharePointのAPIを、直接操作できる仕組みです。これを使えば、パスの概念にとらわれることがありません。つまり、クラウド上のファイルを、シームレスに扱えるようになります。

ブラウザの挙動にも、ドライブのマウントにも依存しません。ファイルが見つからないというエラーは、起きなくなりました。構造上の問題が、きれいに解消されたのです。

Pythonによる自動化、レガシー脱却の好機

移行作業には、もちろん壁もありました。非エンジニアにとって、環境構築は未知の領域です。さらに、APIの認証情報を取得するための、アプリ登録も必要です。これらは非常に難しく感じる作業でした。エラー文を見ても原因が分からず、途方に暮れました。そのような瞬間が、何度かあったのも事実です。

しかし、体系的な学習環境があれば大丈夫です。この壁は、確実に乗り越えることができます。もし独学に行き詰まっているなら、プロに頼りましょう。知見を借りるのが、最も確実な近道となります。プログラミングスクールを活用するのもおすすめです。実践的な環境で、基礎からAPI連携まで学べます。

効率的にスキルを習得できるでしょう。より高度な開発や、エラー対応の知識も得られます。現役エンジニアの知見に触れることも大切です。これらは、皆さんにとって大きな助けになるはずです。

Python自動化でシステム恐怖からの解放、好機到来

私はPythonスクリプトを、サーバー上で実行させました。初めて動かした日の夜のことです。毎日夕方の5時に起きていた不具合が、止まりました。「Zドライブへの接続が切れました」という悲鳴はありません。翌朝に出社すると、驚きの光景がありました。

無人の状態で、SharePointからデータが取得されています。集計済みのファイルも、正しくアップロードされていました。技術を現代化することで、システムに振り回されなくなります。恐怖から完全に解放された、素晴らしい瞬間でした。

SharePointへの移行によるマクロの停止についてです。これは決して、単なるシステム障害ではありません。長年放置されてきた、レガシーコードを手放すチャンスです。より堅牢な自動化環境へと、進むことができます。ステップアップするための、またとない好機なのです。この機会を前向きに捉えてみてください。

関連リンクとチェックリスト

無料プレゼント

Excel業務を自動化する前に確認するチェックリスト(PDF)

自動化していい作業かどうか、VBAかPythonか、最初に避けるべき落とし穴。実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。

無料でチェックリストを受け取る

¥980 ミニキット

コピペで動かせる3スクリプト+自動化チェックリスト

最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。

ミニキットを見る(¥980)

学習サービスとアンケート

このスキルを活かしてさらに前へ進むなら

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →

Excel VBA プログラミング 解説書 第2版 基礎知識 学習 参考書 マクロ 自動化 業務効率化 手順書 入門書 技術書

関連する学びを少し広げるなら

Excel VBA プログラミング 解説書 第2版 基礎知識 学習 参考書 マクロ 自動化 業務効率化 手順書 入門書 技術書

この記事の内容を手元で試しながら、実務で少しずつ身につけたい方に向いた一冊です。

Amazonで見る → 楽天で見る →

※Amazon/楽天のアフィリエイトリンクを含みます

[アンケート] この記事は役に立ちましたか?

30秒で答えられます。改善の参考にします。

1問だけ回答する