🔍

ExcelVBA で URL 形式のパスを使って SharePoint 又は Onedrive に Excel ファイルを作成する方法

に公開

はじめに

ExcelVBA で URL 形式のパスを使って SharePoint 又は Onedrive に Excelファイルを作成する方法を確認したので記録します。
また、試行の過程で、URL 形式のパスを使ってエラーになったメソッド等も記録します。

URL 形式のパスで Excelファイルを作成する方法

Workbooks.Add で 新規ブックを作成した後、SaveAs メソッドを使い、URL 形式のパスで保存します。サンプルコードは、以下のとおりです。

ExcelVBA
Sub Sample()

    Dim UrlPath As String
    Dim StrNow As String
    
    'SharePoint又はOneDriveのURLのフォルダーパス
    UrlPath = "https://{テナント名}.sharepoint.com/sites/{サイト名}/Shared%20Documents"
    'UrlPath = "https://{テナント名}-my.sharepoint.com/personal/{ユーザープリンシパル名}/Documents"
    
    '実行時刻(文字列)
    StrNow = Format(Now, "yyyyMMdd-HHmmss")

    'URLのパスでExcelファイルを生成
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=UrlPath & "/" & StrNow & "_test.xlsx"

    'Excelファイルを閉じる
    ActiveWorkbook.Close

End Sub

URL 形式のパスに非対応と考えられるメソッド等

以下、URL 形式のパスを使って、エラーになったメソッド等を記載します。

(1) Workbook オブジェクトの SaveCopyAs メソッド

URL 形式のパスについて、Workbook オブジェクトの SaveAs メソッドでは、成功しましたが、同じオブジェクトの SaveCopyAs メソッドでは、エラーになりました。
したがって、同じ Workbook オブジェクトのメソッドでも、URL 形式のパスへの対応・非対応は、メソッド毎に確認する必要があるようです。
https://learn.microsoft.com/ja-jp/office/vba/api/excel.workbook

(2) VBA のステートメント全般

URL 形式のパスについて、ファイル・フォルダー操作に関する VBA のステートメント(Open, Close, FileCopy, Kill, MkDir 等)は、エラーになりました。
https://learn.microsoft.com/ja-jp/office/vba/language/reference/statements

(3) FileSystemObject オブジェクト

URL 形式のパスについて、ファイル・フォルダー操作に関する FileSystemObject オブジェクトのメソッド(CopyFile, DeleteFile, CreateTextFile, CreateFolder 等)は、エラーになりました。
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/filesystemobject-object

まとめ

ExcelVBA で URL 形式のパスを使って、Excelファイルを新規作成することはできましたが、ファイルの削除やコピー、フォルダー作成ができるメソッド等は、見つかりませんでした。
なお、新規作成したExcelファイルのブックやシートの操作(セルの書き込み、読み取り、シート生成等)については、試行した範囲では、エラー等は発生しませんでした。

Discussion