shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】OneDrive上のファイルを開く、保存の動作確認

VBAでOneDriveやSharePointにあるファイルを開く、保存の動作確認の備忘録です。ファイルパスがURL形式のとき、Dir関数、FileSystemObjectでは適切に動作しなかったが、「Open・Save・SaveAs・Close」のメソッドは、URL形式でも動作しました

内容:

動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2501)です。

確認の背景

OneDriveやSharePointにあるファイルは、ファイルパスがURL形式となります。そのため、Dir関数やFileSystemObjectでは適切に動作しないことがあり、ファイルを開く、保存の動作について確認してみました。

shikumika.org

確認した内容

下図のようにマクロを含むExcelファイル「ファイルを開く、保存のテスト.xlsm」と同じフォルダに「テストA.xlsx」を事前に準備しています。

同じフォルダに「ファイルを開く、保存のテスト.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で指定されています。

保存フォルダ名がhttpsで始まるURLになっている

保存フォルダ名がURLで指定されている

その結果、適切に「Open・Save・SaveAs・Close」は動作しました。

ただし、上述の確認の背景のとおり、Dir関数やFileSystemObjectでは注意が必要です。

また、「FileCopy・Name・Kill」もエラーとなります。

shikumika.org

以上、Excel VBAでOneDrive上のファイルを開く、保存の動作確認でした。