コンピュータや音楽の事書いてます

[Excel] sharepointのExcelパス トラブル解決 FullNameURLEncoded

sharepointExcelパスを加工してHYPERLINK関数でリンクさせようとすると色々とうまくいかない時がある。
こういうやつ https://xxxxx.sharepoint.com/sites/aaa/bbb/Shared%20Documents/~~
シート関数の ENCODEURL() はコロンやスラッシュもエンコードしてしまうので、この場合には使えない。
WorkBookオブジェクトのFullNameURLEncodedは良い感じに必要なところだけをEncodeしてくれているので、VBAPowershellなどでこいつを抽出できれば使える。日本語がガンガン含まれていても問題ないみたい。
シェアポをOnedriveにリンクさせたローカルフォルダ内の*.xlsxであれば、Powershellの場合、
Excelが起動している前提)

using namespace Microsoft.Office.Interop.Excel
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel")
$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
cd シェアポをOnedriveにリンクさせたローカルパス
ls *.xlsx | foreach { 
  $book = $excel.Workbooks.Open($_.FullName); 
  $book.FullNameURLEncoded; 
  $book.Close(); 
}

これで得られたhttp://付きのパスをExcelシートC列に並べた場合、
D列がシート名
E列が"$A$1"などのアドレス
だとすると
=HYPERLINK(CONCAT("[",C1,"]'",D1,"'!",E1))
これでシート指定・アドレス指定のハイパーリンクを作ることが出来た