皆さんは、クエリでソースを読み込もうとしたらエラーが起きたことはないだろうか。私はよくある。
固定のパスでフォルダを参照していると、ふとした拍子にリンクが切れてしまうことがあるからだ。
こんな時は、慌てずに右上の「設定の編集」ボタン、もしくは「データ ソースの変更」から正しいファイルパス(もしくはフォルダパス)に修正してあげよう。
ただ「もし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データを読み込む関数に入れてみて結果がどう出るかでチェックすればいい。