ExcelVBA で URL 形式のパスを使って SharePoint 又は Onedrive に Excel ファイルを作成する方法
はじめに
ExcelVBA で URL 形式のパスを使って SharePoint 又は Onedrive に Excelファイルを作成する方法を確認したので記録します。
また、試行の過程で、URL 形式のパスを使ってエラーになったメソッド等も記録します。
URL 形式のパスで Excelファイルを作成する方法
Workbooks.Add で 新規ブックを作成した後、SaveAs メソッドを使い、URL 形式のパスで保存します。サンプルコードは、以下のとおりです。
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 形式のパスへの対応・非対応は、メソッド毎に確認する必要があるようです。
(2) VBA のステートメント全般
URL 形式のパスについて、ファイル・フォルダー操作に関する VBA のステートメント(Open, Close, FileCopy, Kill, MkDir 等)は、エラーになりました。
(3) FileSystemObject オブジェクト
URL 形式のパスについて、ファイル・フォルダー操作に関する FileSystemObject オブジェクトのメソッド(CopyFile, DeleteFile, CreateTextFile, CreateFolder 等)は、エラーになりました。
まとめ
ExcelVBA で URL 形式のパスを使って、Excelファイルを新規作成することはできましたが、ファイルの削除やコピー、フォルダー作成ができるメソッド等は、見つかりませんでした。
なお、新規作成したExcelファイルのブックやシートの操作(セルの書き込み、読み取り、シート生成等)については、試行した範囲では、エラー等は発生しませんでした。
Discussion