【エクセル】マクロ(VBA)でSharePointのファイルを開く・保存する方法
2023.11.16 /
本記事ではMicrosoftのエクセルにおける、マクロ(VBA)からSharePointにあるエクセルファイルを開く・保存する方法について詳しく解説していきます。
テレワークが主流になってきた現代では、パソコンのローカルや社内の共有フォルダにファイルを保存するのではなくSharePointやOneDriveなどのクラウドサービスに保存して共有利用することが多くなりました。
関連リンク:【OneDrive】基本的な使い方(ビジネス向け)
クラウドサービスにエクセルを保存している場合、マクロでクラウド内のエクセルを開くにはこれまでのパスを指定する方法ではアクセスすることができません。
ぜひ本記事を通して、マクロ(VBA)からSharePointに格納しているエクセルファイルにアクセスする方法について理解を深めてください。
ここではMicrosoft 365による最新のエクセルを使用しています。
関連リンク【Microsoft365とは】どのようなサービスかわかりやすく解説
マクロからSharePointを開くとは
通常エクセルのマクロを利用してエクセルを開くなどの操作をする場合、対象エクセルのファイルパスを指定します。
しかし開きたいエクセルがSharePointなどのクラウドサービスに格納されている場合はファイルパス指定では開くことができません。
現代では社内のファイルサーバーからSharePointやOneDriveなどのクラウドに保管場所を移行する動きが活発化しています。そのためマクロ(VBA)からクラウドサービスに格納されているファイルにアクセスできるようになることは必須です。
マクロからSharePointのファイルにアクセスするにはそのファイルのURLを指定する必要があります。URLの取得方法については次項より解説していきます。
SharePoint上のエクセルのマクロを実行する方法を知らない方は以下記事をご参照ください。
【SharePoint】エクセル(Excel)のマクロを実行する方法
SharePointとは
SharePoint(Online)とはMicrosoftが提供しているクラウドサービスであり、クラウド上にファイルの保管や共有を可能にする大容量のクラウドストレージです。
クラウド上にファイルを保存できるため、いつでもどこでもインターネットさえつながっていれば利用することができます。そのため会社全体で利用できる共有フォルダーとして利用されます。
SharePoint Onlineとは:機能や使い方について
SharePoint:ファイルパス(URL)の取得方法
マクロからSharePointのエクセルを開くには、対象ファイルのURLを指定する必要があります。
SharePointに格納されているエクセルのURLを取得する方法は以下の通りです。
- SharePointにアクセスし、対象のファイルまで移動する
- 対象のファイルを右クリックする
- 表示されたメニューから「開く」>「アプリで開く」を選択する
- 画面左上にある「ファイル」をクリックする
- 左にあるメニューから「情報」をクリックする
- 表示された情報画面から「パスのコピー」をクリックする
上記の方法で対象エクセルのURLを取得することができます。URLは以下のような形式をとります。
https://〇〇.sharepoint.com/フォルダ名/エクセル名.xlsx?web=1
SharePointのエクセルのURLを取得したい場合は「ブラウザーで開く」のではなく「アプリで開く」ようにしてください
マクロからSharePointのエクセルを開く
取得したエクセルのURLを使ってマクロ(VBA)から開いてみましょう。Microsoft Visual Basicを開いて以下コードを記入して実行してみてください。
Sub OpenSharePoint()
Workbooks.Open ("https://〇〇.sharepoint.com/フォルダ名/エクセル名.xlsx?web=1")
End Sub
上記コードではWorkbooks.OpenでURLを指定しています。このマクロを実行すると自動保存が有効な状態で対象のエクセルがアプリで開きます。
マクロを実行できるのは対象のURLにアクセスできるユーザーだけです。アクセス権限がない人はファイルを開くことができませんので注意してください
マクロからSharePointのエクセルを保存する
マクロからSharePointのエクセルをローカルに保存する方法について解説していきます。事前準備として保存する対象エクセルのURLとローカルに保存するパスを用意しておいてください。
Microsoft Visual Basicに以下コードを張り付けて、SharePointのファイルURLとローカルのパスを適宜変更してください。
Sub OpenSharePoint()
Dim myURL As String
Dim localPath As String
Dim WinHttpReq As Object
myURL = "https://〇〇.sharepoint.com/フォルダ名/エクセル名.xlsx" 'SharePointのファイルURL
localPath = "C:\test\test.xlsx" 'ローカルに保存するパス
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.send
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1 'バイナリデータ
oStream.Write WinHttpReq.ResponseBody
oStream.SaveToFile localPath, 2 '1 = 上書きしない, 2 = 上書きする
oStream.Close
End If
Workbooks.Open myURL
End Sub
上記コードを実行すると、指定したローカルにSharePoint上のエクセルが保存されます。
指定するURLには「?web=1」を付けないようにしてください。付けてしまうとエクセルの保存がうまくいかないです
まとめ
本記事「【エクセル】マクロ(VBA)でSharePointのファイルを開く・保存する方法」はいかがでしたか。
マクロでSharePoint上のファイルを操作できると、マクロでできる幅が大きく広がります。ぜひローカルファイルだけでなく、SharePoint上のエクセルも対象にしたマクロを作ってみてください。
エクセルには様々な仕事に便利な機能が備わっています。以下エクセルのまとめ記事では仕事に役立つ機能を多数紹介しております。ぜひご覧いただき、ご自身の仕事に役立つ機能を見つけてください。
【エクセル】機能一覧:仕事で便利な機能や設定をまとめて紹介