ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBAでSharePointにファイルをアップロードする

今回はVBAでSharepoint上にファイルをアップロードする方法を解説します。

目次

VBAでSharePointにファイルをアップロードする方法

Sharepoint(シェアポイント)とは

Sharepoint(シェアポイント)とはマイクロソフトが提供している情報共有アプリです。インターネットを閲覧するためのブラウザを利用します。インターネット上にドキュメントライブラリというようなデータを保存しておく場所があり、そこにデータをアップロードすることで、仲間とデータを共有することができます。

サンプルコード

サンプルコードは下記の通りです。

Sub SaveAtSharepoint()

    Dim url As String '保存先のシェアポイントのURL
    Dim conv_url As String 'シェアポイントのURLをフォルダ名に変換した文字列。フルパスなのでファイル名まで。
    Dim local_full_path As String 'シェアポイントに保存したいデータのフルパス
    Dim fso As Object 'FileSystemObjectのインスタンス化
    
    '>初期設定
    url = "シェアポイント上のURL" & "ファイル名.xlsx"
    local_full_path = "アップロードしたいファイルのフルパス"
    '<初期設定
    
    Set fso = CreateObject("Scripting.FileSystemObject")  'インスタンス生成
    conv_url = ConvertDirectoryPath(url)
    
    If fso.FileExists(local_full_path) Then
        fso.CopyFile local_full_path, conv_url
    End If
    
    Set fso = Nothing

End Sub

Function ConvertDirectoryPath(path) As String
    'このプロシジャはシェアポイントのURLをドキュメントライブラリのディレクトリパスに変換する
    ConvertDirectoryPath = Replace(path, " ", "%20")
    ConvertDirectoryPath = Replace(ConvertDirectoryPath, "/", "\")
    ConvertDirectoryPath = Replace(ConvertDirectoryPath, "http:", "")
End Function

内容の解説

内容について簡潔に解説します。そもそもシェアポイントにアップロードすると言っても、どこかに保存するだけです。その「どこか」を表すパスが分かれば、そこに保存したいファイルを保存するだけです。ファイルの操作にはFileSystemオブジェクトのCopyFileメソッドが使えます。

よって、ファイルの保存先が分かれば「シェアポイントにアップロード」できます。そして、シェアポイント上のファイルのURLに当たる部分をフォルダ名に置き換えるのがFunctionプロシジャの中身です。

<2019/12/27追記>
ご質問頂いたので追記します。url = "シェアポイント上のURL" & "ファイル名.xlsx"の「シェアポイント上のURL」の部分は、データをアップロードしたいところの、ドキュメントライブラリの名称までです。「DocLib1」のようなドキュメントライブラリっぽい名前のところまでを入力してみてください。

データをアップロードしたときのページのURLの最後に「Forms/AllItems.aspx」がついている場合はその直前の部分までだと思います。そのあたりにDocLib1のようなところがあると思うのでそのあとの「/」までを変数urlに入れるとうまくいくはずです。

「Forms/AllItems.aspx」がシェアポイントにおいて何を意味するかの説明はこのブログでは割愛します。

VBAでSharePointにアップロードする方法のまとめ

シェアポイントにファイルをアップロードする方法を簡単にまとめます。

  • シェアポイントにアップロードするとは、ある場所にデータを保存することである
  • シェポイントのURLから保存するフォルダのパスを求めることができる
  • FileSystemオブジェクトのCopyFileメソッドを使ってフォルダに保存する

一見難しそうな操作も分解してみると案外シンプルである事が分かります。なお、この記事を執筆するにあたり、下記URLの内容を参考にさせて頂きました。
VBA | Second Life of a Hungarian SharePoint Geek

<関連記事>