shikumika’s diary

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

【Excel】OneDriveのファイルURLをローカルパスに変換(数式で文字列の置換)

Excelの数式で、CELL(“filename”,A1)やVBAのThisWorkbook.Pathを使用したとき、OneDriveに同期したフォルダではローカルパスが取得できず、VBA等が適切に動作しないことがあります。


例えば、

C:\Users\xxx\OneDrive\aaa\bbb\ccc\[売上データの統合.xlsm]設定

といったローカルパスを取得したいが、

https://d.docs.live.net/□□□□□/aaa/bbb/ccc/[売上データの統合.xlsm]設定

のようにhttpsから始まるURLが取得される。

Excelの数式を利用して、OneDriveのファイルURLをローカルパスに変換してみたので備忘録。

 

アウトプットイメージ

下図のように、CELL(“filename”,A1)を使用して取得したフォルダ情報をSUBSTITUTE関数を使用して置換。

if文で、https:を含むときに置換を反映するようにしている。

数式でローカルパスに変換イメージ

数式でローカルパスに変換


なお、上記図の数式部分は次のとおり。

元の情報

=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)

検索文字h

https://d.docs.live.net/12345678/  (一文字目は半角”h”)

置換文字

C:\Users\xxx\OneDrive\

置換後1

=SUBSTITUTE(B2,B3,B4)

置換後2

=SUBSTITUTE(B5,"/","\")

確定

=IF(COUNTIF(B2,"https:*")=0,B2,B6)

 

以上、Excelの数式を利用して、OneDriveのファイルURLをローカルパスに変換してみた備忘録でした。