SQLをExcelで使用する際にブック・シートの保存・保護で気をつける点があります。
ブックの事前保存
ExcelでSQLを利用するために使用するADOでは、事前にブックを一度保存しておく必要があります。
シートの保護解除
ADOに限りませんが、シートの値を更新するにはシートの保護を解除しておく必要があります。
SQLの操作・集計対象であるシートに保護がかかっていても操作に影響はありません。
SQLの集計結果を貼り付けるシートは保護が解除されている必要があります。
上書き保存許可
ADOではブック自体が「読み取り専用」になっていると正しく集計が出来ません。
下記事例ではブックを「読み取り専用」状態にしています。
「select * from [テスト$]」のSQL文を実行して「貼付」シートに転記しています。
1回目のSQL実行後、セルC2の値を変更しているにも関わらず、値が変わっていません。
ブックが「読み取り専用」になっていない場合には、この症状は発生しません。
エラーが発生していないので、うっかり見逃しそうになりますが、留意する必要があります。