【エクセル】マクロ(VBA)でSharePointのファイルを開く・保存する方法

時計 2023.11.16 / 時計

【エクセル】マクロ(VBA)でSharePointのファイルを開く・保存する方法

記事ではMicrosoftのエクセルにおける、マクロ(VBA)からSharePointにあるエクセルファイル開く・保存する方法について詳しく解説していきます。

テレワークが主流になってきた現代では、パソコンのローカルや社内の共有フォルダにファイルを保存するのではなくSharePointやOneDriveなどのクラウドサービスに保存して共有利用することが多くなりました。

関連リンク:【OneDrive】基本的な使い方(ビジネス向け)

クラウドサービスにエクセルを保存している場合、マクロでクラウド内のエクセルを開くにはこれまでのパスを指定する方法ではアクセスすることができません。

ぜひ本記事を通して、マクロ(VBA)からSharePointに格納しているエクセルファイルにアクセスする方法について理解を深めてください。

ここではMicrosoft 365による最新のエクセルを使用しています。

関連リンク【Microsoft365とは】どのようなサービスかわかりやすく解説

マクロからSharePointを開くとは

通常エクセルのマクロを利用してエクセルを開くなどの操作をする場合、対象エクセルのファイルパスを指定します。

しかし開きたいエクセルがSharePointなどのクラウドサービスに格納されている場合はファイルパス指定では開くことができません。

現代では社内のファイルサーバーからSharePointやOneDriveなどのクラウドに保管場所を移行する動きが活発化しています。そのためマクロ(VBA)からクラウドサービスに格納されているファイルにアクセスできるようになることは必須です。

マクロからSharePointのファイルにアクセスするにはそのファイルのURLを指定する必要があります。URLの取得方法については次項より解説していきます。

SharePoint上のエクセルのマクロを実行する方法を知らない方は以下記事をご参照ください。

SharePointとは

SharePoint(Online)とはMicrosoftが提供しているクラウドサービスであり、クラウド上にファイルの保管や共有を可能にする大容量のクラウドストレージです。

クラウド上にファイルを保存できるため、いつでもどこでもインターネットさえつながっていれば利用することができます。そのため会社全体で利用できる共有フォルダーとして利用されます。

SharePoint:ファイルパス(URL)の取得方法

マクロからSharePointのエクセルを開くには、対象ファイルのURLを指定する必要があります。

SharePointに格納されているエクセルのURLを取得する方法は以下の通りです。

  1. SharePointにアクセスし、対象のファイルまで移動する
  2. 対象のファイルを右クリックする
  3. 表示されたメニューから「開く」>「アプリで開く」を選択する
  4. SharePoint:表示されたメニューから「開く」>「アプリで開く」を選択する
  5. 画面左上にある「ファイル」をクリックする
  6. SharePoint:画面左上にある「ファイル」をクリック
  7. 左にあるメニューから「情報」をクリックする
  8. SharePoint:左にあるメニューから「情報」をクリック
  9. 表示された情報画面から「パスのコピー」をクリックする
  10. SharePoint:表示された情報画面から「パスのコピー」をクリックする

上記の方法で対象エクセルのURLを取得することができます。URLは以下のような形式をとります。

SharePointに格納しているエクセルのURL形式

https://〇〇.sharepoint.com/フォルダ名/エクセル名.xlsx?web=1

POINT

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上のエクセルも対象にしたマクロを作ってみてください。

エクセルには様々な仕事に便利な機能が備わっています。以下エクセルのまとめ記事では仕事に役立つ機能を多数紹介しております。ぜひご覧いただき、ご自身の仕事に役立つ機能を見つけてください。