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上のファイルを開く、保存の動作確認でした。