皆さんは、クエリでソースを読み込もうとしたらエラーが起きたことはないでしょうか。私はよくあります。
固定のパスでフォルダを参照していると、ふとした拍子にリンクが切れてしまうことがあるからです。
こんな時は慌てずに、右上の「設定の編集」ボタン、もしくは「データ ソースの変更」から、正しいファイルパス(もしくはフォルダパス)に修正してあげましょう。
ただ、「もしAがダメならBを読み込んで欲しいんだよね」という場面もあるかもしれません。ところが、DataSource.Errorは「try~oherwise」では回避できないんですよね。
これじゃダメ接続1 = File.Contents("C:\……\……\A.xlsx"), 接続2 = File.Contents("D:\……\……\A.xlsx"), ソース = Excel.Workbook(try 接続1 otherwise 接続2, null, true)
この方法では読み込みエラーが出ている場合でも、エラーとは判定してくれません。もちろん、HasErrorを使っても一緒です。
ではどうすればいいんでしょうか。読み込み方を下記のようにすれば判定できます。
こっちが正解接続1 = File.Contents("C:\……\……\A.xlsx"), 接続2 = File.Contents("D:\……\……\A.xlsx"), ソース = Excel.Workbook( if (try Binary.Length(接続1))[HasError] then 接続2 else 接続1, null, true )
「File.Contents」の結果はバイナリ型なので、Binaryデータを読み込む関数に入れてみて、結果がどう出るかでチェックすればいいんです。