パパセンセイ365

Power Platformの技術系のお話を繰り広げます

スプレッドシートをダウンロードしてEXCELに変換した際に「問題が見つかりました」とエラーが出た場合の対処

スプレッドシートをダウンロードするとEXCELに変換してくれます。 2016年7月まで問題ありませんでしたが2016年8月からなぜか下記のようなエラーが出てきまして、変換されたEXCELファイルを修復しないと開けなくなってしましました。

f:id:tomikiya:20200326222524p:plain

なぜ


手探りで調べたところ、どうやら以下の条件を満たすセルが1つでもあるとエラーが出るようです。

  • 関数式が入っている
  • 書式が日付である。※日時は除く

私はTODAY()を使っていたのでアウトでした。あと、日別の表で日付をA1+1のように記述していたのでそこも引っかかりました。

回避


原因は深く追っていないので不明ですが、関数式を固定値に変えたり書式を「数値」や「日時」に変えたりすることでエラーが出なくなることを確認しております。 また、煩わしくなければダイアログで「はい」を選択して自動的に回復してもらってもよいかなと。

私の場合は50以上のスプレッドシートをダウンロードしてEXCELのVBAでファイルをそれぞれ開いていたので、スプレッドシートの変更は数が多く躊躇しました。 そこでスプレッドシートを修正するのではなく、EXCEL変換後のファイルを修復して開くようにVBAを変更しました。

Private Function Sample() As Workbook
    On Error GoTo ErrHandler    
    Set Sample= Workbooks.Open(fileName:"fileName")
    Exit Function
ErrHandler:
    Set Sample= Workbooks.Open(fileName:"fileName", CorruptLoad:=xlRepairFile)
End Function