Power BI:  対処法「The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.」

# 背景
ある外部サイトの値段を定期的に見える化したいって要望があったので、作ったのはいいんですが・・

Power BI Service にて更新しようとしたら以下エラーが発生。この対処法についての備忘録

> 直前の更新が失敗しました: Thu Jul 14 2022 05:10:30 GMT+0900 (日本標準時)
データセット内のデータの処理中にエラーが発生しました。詳細を非表示にする
データ ソース エラー:	DataSource.NotFound: <pii>Excel Workbook</pii>: <pii>**The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.** The 64-bit version of the Access Database Engine OLEDB provider may be required to read this type of file. To download the client software, visit the following site: https://go.microsoft.com/fwlink/?LinkID=285987.</pii>. . The exception was raised by the IDbCommand interface. Table: ボンデ鋼板.
クラスター URI:	WABI-SOUTH-EAST-ASIA-redirect.analysis.windows.net
アクティビティ ID:	684242ce-1380-4af7-9a08-bf32dd723f03
要求 ID:	a5d3ff92-ca1b-4004-becf-d9f91c8c12ed
時刻:	2022-07-13 20:10:30Z

![2022-07-14_08h54_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/aec6b74c-25f1-6335-efa4-80adc3f75fd8.png)

# 概要
- Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント の 32bit → 64bit

本来は　↑　だけで OK なんですが、今回は以下問題もあった・・

- 外部サイト での公開ファイルが・・\*.xls な為、諦めるか、以下
    - Automate で 3rd party の Connector で xlsx 変換をかけて取り込む
    - Automate Desktop で xlsx 変換をかけて取り込む

- \*.xls 非対応なのは以下
    - Power BI Service
    - Graph API

ということで、最終的には以下にしました・・
- 外部サイトの定期更新を Power Automate で実施し、更新有る際に Teams に 通知
- 通知時に Power BI を手動で更新＆発行
    - Cloud 連携がまだ使えない為、PAD で取得＆変換は今回はパス
    
# 調査
## ドライバー問題？

[ここ](https://go.microsoft.com/fwlink/?LinkID=285987) 見ろってことなので見てみると以下が該当してそう

> 状況 3:Microsoft 365 サブスクリプションで Access または .XLS ファイルを使うことによる問題

ということで 64bit 版をダウンロードしてインストールしようとしたら
![2022-07-14_08h59_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/6a99a147-92f8-1e66-2c0d-3ba8514f9c35.png)

## 32bit 版が入っていて、64bit版が入れられない

![2022-07-13_17h06_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/68f041f3-6627-426b-08db-8a305364da12.png)

入れた覚えはないけれど、32bit版が入っていた・・だから、Local で問題なく動いていただけなのかも
![2022-07-14_09h23_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/89d832ba-093c-e66f-428c-14e6f40852e3.png)

ということで、アンインストールして、再度インストール。
再度更新、発行。

改善せず・・。でも、エラーは出なくなった・・。

## Excel Version 古いよ

当初 Excel.File(Web.Contents({target URL}) で処理してたが、これに対して、
「**Excelは、OneDrive/SharePoint に置くか、Custom Cnnector使わないと更新出来ないよ**」って話を聞いた

マジで？？・・と思ったけど・・すんなり受け入れられなかった・・何故なら
- Web.Contents は、特に問題なく更新出来る
- Excel.File が外部かどうかを区別するとは思えない
- ドライバー入れなおしたら、特にエラーは出なくなった

ということ、外部サイトにある \*.xlsx ファイルで検証することに

外部サイトのデータは、[経産省のオープンデータ](https://www.meti.go.jp/statistics/tyo/iip/xls/b2015_goq1j.xlsx
) を利用

結論
- 外部サイトにある \*.xlsx でもスケジュール更新は可能
- そもそも **\*.xls は非対応**

### 実際の調査内容
	
外部の Excel を Web.Contents  で取得して、取込、簡単な表をビジュアル追加
![2022-07-15_09h53_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/2f29bdac-aada-2d4f-6e08-a02363167792.png) 
	
	
「今すぐ更新」、で更新　→正常更新完了
![2022-07-15_09h53_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/7ab96db5-0373-e114-37bb-7facca16feb5.png)

問題無し！！ :golfer: 

\*.xlsx なら問題なくスケジュール更新可能。ってことでドキュメントで裏取り

### ドキュメント
	
> **Power BI でサポートされているブックの種類**
> Power BI では、Excel 2007 以降で作成したブックのインポートまたは接続がサポートされています。 ブックは、**1 GB 未満の .xlsx ファイルか .xlsm ファイルで保存**しておく必要があります。 この記事で説明する機能の一部は、新しいバージョンの Excel でのみ利用できます。

https://docs.microsoft.com/ja-jp/power-bi/connect-data/service-excel-workbook-files#what-types-of-workbooks-does-power-bi-support

## Power Automate では \*.xls → \*.xlsx 変換は出来ない

この時点で、

- 外部サイトから直接 Power BI での処理

は諦めざるを得なかった。

で、Power Automate で変換かけられるだろうと思ったのだが・・

出来ると思っていた変換は、以下だった・・・・ダメだ・・

- Power Automate: 3rd party Connectors しかないので・・会社だと使えない
- [Power Automate Desktop](https://qiita.com/baku2san/items/01adccbff94156133ef0): 出来るけど・・使いたくない

## Graph API も \*.xls 非対応

諦めたくないので、Graph API も試す。Content 取れたら Automate でファイル生成か、テキスト解析にいければ、ワンちゃん・・と思ったけど・・ダメ：まぁ当然

ドキュメントにもちゃんと明記されてた

> The Excel REST API supports only Office Open XML file formatted workbooks. **The .xls extension workbooks are not supported.**

https://docs.microsoft.com/en-us/graph/api/resources/excel?view=graph-rest-1.0

ということで、最終的には以下にしました・・
- 外部サイトの定期更新を Power Automate で実施し、更新有る際に Teams に 通知
- 通知時に Power BI を手動で更新＆発行
    - Cloud 連携がまだ使えない為、PAD で取得＆変換は今回はパス


# あとがき
外部サイトに連絡して、\*.xls → \*.xlsx にしませんか？ってお願いしたけど・・多分ダメだろうなぁ・・

サイズも小さくなるし、扱いやすくなるしで良いことずくめなのに、未だに古いファイル形式使う人達は何考えてるんでしょうね？ :thinking: 

# keyword
how to fix "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."