VBAでOneDriveやSharePointにあるファイルを開く、保存の動作確認の備忘録です。ファイルパスがURL形式のとき、Dir関数、FileSystemObjectでは適切に動作しなかったが、「Open・Save・SaveAs・Close」のメソッドは、URL形式でも動作しました。
内容:
動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2501)です。
確認の背景
OneDriveやSharePointにあるファイルは、ファイルパスがURL形式となります。そのため、Dir関数やFileSystemObjectでは適切に動作しないことがあり、ファイルを開く、保存の動作について確認してみました。
確認した内容
下図のようにマクロを含むExcelファイル「ファイルを開く、保存のテスト.xlsm」と同じフォルダに「テストA.xlsx」を事前に準備しています。

この状態で、次のマクロ実行して確認しました。
マクロの動作内容は以下です。
- ThisWorkbook.Pathで、現在のマクロブックのパスを取得
- Openメソッドで「テストA.xlsx」を開く
- Saveメソッドで「テストA.xlsx」を上書保存する
- SaveAsメソッドで「テストA.xlsx」を「テストB.xlsx」に別名保存
- Closeメソッドでファイルを閉じる
Sub ファイルを開いて別名保存テスト()
Dim 現在フォルダ As String
Dim ワークブック As Workbook
'現在のマクロブックのパスを取得'
現在フォルダ = ThisWorkbook.Path
'テストA.xlsxを開く'
Set ワークブック = Workbooks.Open(現在フォルダ & "\テストA.xlsx")
'上書き保存'
ワークブック.Save
'テストB.xlsxとして保存'
ワークブック.SaveAs Filename:=現在フォルダ & "\テストB.xlsx", FileFormat:=xlOpenXMLWorkbook
'ファイルを閉じる'
ワークブック.Close SaveChanges:=False
End Sub
なお動作中、次のように保存フォルダ名はhttpsから始まるURLで指定されています。

その結果、適切に「Open・Save・SaveAs・Close」は動作しました。
ただし、上述の確認の背景のとおり、Dir関数やFileSystemObjectでは注意が必要です。
また、「FileCopy・Name・Kill」もエラーとなります。
以上、Excel VBAでOneDrive上のファイルを開く、保存の動作確認でした。