TL;DR
Power QueryがODBCデータソースを見つけられません。このマシンにDSN(データソース名)が存在しない、ドライバーがインストールされていない、または32ビットと64ビットの不一致が原因です。コントロールパネルからODBCデータソースを開き、正しいアーキテクチャのDSNを確認して、見つからない場合は対応するドライバーをインストールしてください。
このエラーが発生する原因
Power Queryに表示される完全なエラーメッセージ:
DataSource.Error: OLE DB or ODBC error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
Windows ODBCドライバーマネージャーが接続要求を受け取りましたが、一致するものが見つかりませんでした。一致するデータソースもドライバーも存在しない状態です。原因は主に3つ考えられます:
- DSNがこのマシンに存在しない — 別の人が自分のマシンで設定したまま、あなたのマシンに複製していない。
- ドライバーがインストールされていない — SQL Server、MySQL、Oracleなど、必要なドライバーがインストールされていない。
- アーキテクチャの不一致 — 64ビットのExcelが64ビットのODBCレジストリを参照しているが、DSNは32ビット側に登録されている(またはその逆)。
修正方法1:DSNを確認・作成する
まず、正しいODBCマネージャーを開きます。使用しているExcelのバージョンによって異なります:
- 64ビットExcel:
%SystemRoot%\System32\odbcad32.exeを実行するか、スタートメニューで*ODBCデータソース(64ビット)*を検索します。 - 32ビットExcel:代わりに
%SystemRoot%\SysWOW64\odbcad32.exeを実行します。
システムDSNタブを開きます。DSNが存在しない場合は、追加をクリックして作成し、ドライバー、サーバーアドレス、データベース名を入力してください。
重要: Power Queryでは必ずシステムDSNを使用してください。ユーザーDSNは、サービスアカウントや別のWindowsユーザーがクエリを更新しようとした瞬間に機能しなくなります。月曜の朝に追いかけることになる厄介なバグです。
修正方法2:不足しているODBCドライバーをインストールする
新しいデータソースの作成リストにドライバーが表示されない場合、答えは明確です — まずドライバーをインストールしてください。
- SQL Server:Microsoft ODBC Driver 17 または 18 for SQL Server
- MySQL:MySQL Connector/ODBC 8.0
- PostgreSQL:psqlODBC
- Oracle:Oracle Instant Client + ODBCドライバー
Excelと同じビット数のドライバーをインストールしてください — 64ビットExcelには64ビットドライバーが必要です。インストール後、ODBCデータソースを再度開き、DSNを作成する前にドライバーがリストに表示されていることを確認してください。
修正方法3:32ビット / 64ビットの不一致を解消する
これは多くの人がハマるポイントです。DSNは存在するのに、間違った場所に登録されているケースです。
WindowsはDSNを2つの別々のレジストリ場所に保存します:
- 64ビットアプリ:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI - 32ビットアプリ:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI
Excelのバージョンを確認するには:ファイル → アカウント → Excelのバージョン情報。32ビットの場合、タイトルバーに*(32ビット)*と表示されます。64ビットは何も表示されません。
どちらを使用しているか確認したら、対応するODBCマネージャーを開いてDSNが存在するか確認します。間違ったマネージャーにしか登録されていない場合は、正しい方に再作成してください。作業時間は約2分です。
修正方法4:DSNなしの接続文字列に切り替える
長期的により良い解決策があります:DSNを完全に使わない方法です。Power QueryのMコードに直接接続文字列を埋め込みます。ワークブックが移植可能になり、各マシンでのDSN設定が不要になります。
// In Power Query Advanced Editor:
let
Source = Odbc.DataSource(
"Driver={ODBC Driver 17 for SQL Server};Server=myserver;Database=mydb;Trusted_Connection=yes;",
[HierarchicalNavigation = true]
)
in
Source
特定のIPアドレスのMySQLの場合:
Odbc.DataSource(
"Driver={MySQL ODBC 8.0 Unicode Driver};Server=192.168.1.10;Database=mydb;UID=user;PWD=password;"
)
OLE DB(Access、Excelファイル、またはOLE DB経由のSQL Server)の場合:
OleDb.DataSource(
"Provider=SQLOLEDB;Data Source=myserver;Initial Catalog=mydb;Integrated Security=SSPI;"
)
ドライバーがマシンにインストールされていれば、これだけで動作します。DSNのレジストリエントリを管理する必要も、アーキテクチャの混乱もありません。
修正方法5:Power Queryの数式ファイアウォールを確認する
このエラーがDSNとは無関係に発生することがあります — Power Queryの数式ファイアウォールがクロスソースクエリをブロックしている場合です。ファイル → オプションと設定 → クエリのオプション → プライバシーに移動し、レベルをプライバシーレベルを無視するに設定してください。これは信頼できる内部環境のみで行ってください。その後クエリを更新して問題が解消されるか確認します。
修正の確認
- ODBCデータソース(正しいビット数)を開き、システムDSNにDSNが存在することを確認します。
- DSNを選択 → 構成 → テストをクリックします。接続に成功しましたと表示されるはずです。
- Excelに戻り:データ → クエリと接続で、クエリを右クリック → 更新。
- DSNなしの接続文字列を使用している場合は、MコードをAdvanced Editorに貼り付けて完了をクリックします — プレビューペインにエラーなしでデータが表示されるはずです。
診断チェックリスト
- ExcelのビットとODBCドライバーのビットが一致している? ✓
- DSNがシステムDSN(ユーザーDSNではなく)に存在する? ✓
- ドライバーがODBCドライバーリストに表示されている? ✓
- ODBCマネージャーからのDSNテストが成功する? ✓
- ファイアウォール/ネットワークがDBホストとポートへの接続を許可している(例:SQL Serverは1433、MySQLは3306)? ✓
参考資料
- Microsoft Docs:Odbc.DataSource M関数リファレンス
- Microsoft ODBC Driver for SQL Server — ダウンロードページ
- Power Queryのプライバシーレベルと数式ファイアウォールの解説

