Excelの数式で、CELL(“filename”,A1)やVBAのThisWorkbook.Pathを使用したとき、OneDriveに同期したフォルダではローカルパスが取得できず、VBA等が適切に動作しないことがあります。
例えば、
C:\Users\xxx\OneDrive\aaa\bbb\ccc\[売上データの統合.xlsm]設定
といったローカルパスを取得したいが、
https:xxxxxxxxxx/□□□□□/aaa/bbb/ccc/[売上データの統合.xlsm]設定
のようにhttpsから始まるURLが取得される。
Excelの数式を利用して、OneDriveのファイルURLをローカルパスに変換してみたので備忘録。
アウトプットイメージ
下図のように、CELL(“filename”,A1)を使用して取得したフォルダ情報をSUBSTITUTE関数を使用して置換。
if文で、https:を含むときに置換を反映するようにしている。
なお、上記図の数式部分は次のとおり。
元の情報 |
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1) |
検索文字 |
https:xxxxxxxxxx/12345678/ |
置換文字 |
C:\Users\xxx\OneDrive\ |
置換後1 |
=SUBSTITUTE(B2,B3,B4) |
置換後2 |
=SUBSTITUTE(B5,"/","\") |
確定 |
=IF(COUNTIF(B2,"https:*")=0,B2,B6) |
以上、Excelの数式を利用して、OneDriveのファイルURLをローカルパスに変換してみた備忘録でした。