● Excel2010で、『 開かれていない閉じたままのブック・Excel(xlsやxlsx・xlsm)ファイルのデータ 』を読み込むだけでなく、書き込む方法の一覧表(DAOやADOにて)
  
  
本記事は「32bitの」Excelだけでのお話です。ご注意ください。
ただ、OSが64bitであっても、インストールされているExcelが32bitなら大丈夫ではないかと思います。
現在のExcelがどのbitかは、「Excel bit 確認」などの語句でWeb検索してみてください。

※参考記事
Excel上で使う、DAO、ADO、Microsoft Query(ExcelVBAのQueryTableオブジェクト)、では「読み込み」だけでなく、「閉じたまま」の「複雑条件集計」や「書き込み」もできます。
ただし、Excel同士のデータのやりとりの場合はなんと!「削除」ができないので対応策が必要です。
(未確認ですが片方がExcelだとダメかもしれません。逆に、両方Accessとか、AccessADP+SQLServer、などのようなケースなら削除できます。AccessMdb+MySQLも多分ですがODBCのリンクテーブルにすれば、OKなのではないかと思います。)
対応策はこちら。『できないこと』。(←その他の「できないこと」も書いてあります。なお、「あえて削除しない」ことも結構あります。不正対策や整合性維持のためです。基本、削除フラグを立てるだけでも対応できます。もちろん、読み込みだけに使っても構いません。)

Excel2010で、『 開かれていない閉じたままのブック・Excel(xlsやxlsx・xlsm)ファイルのデータ 』を読み込むだけでなく、書き込む方法の一覧表(DAOやADOにて)
~SQLにて「閉じたExcelファイルを ”閉じたまま” 書き込む方法01」~Microsoft Query(QueryTableオブジェクト)を利用する場合~
ADO:Excel2010で、開かれていない閉じたままのブック・Excel(xls)データをできるだけ速く読み込む方法ーその2(ADOにて)
Access2000VBA・Excel2000VBA独学~別の閉じたExcelファイルを ”閉じたまま” 読み込みや書き込をする方法~5つ
  
  

目次

※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
  
  

★ はじめに

「32bitの」Excelファイルの値を、そのExcelファイルを開かずに読みに行ったり書き換えたりする方法です。

(「64bitの」ExcelではDAOは使えないかもしれません(未確認です。)その場合はADOでやる方法があります。→こちら、でテストしましたが、これは32bitExcelでやったテストですので、64bitだとまた微妙にちがうかもしれません。ご参考にとどめるだけにしてください。)

閉じたままのExcelファイルのデータを取得するには、「ExecuteExcel4Macro」を使ったり、「Excel.Application」などで読み込む方法があるようなのですが、以下のサイトによりますと、データの量が多いと速度が遅くなる?みたいです。
http://excel-ubara.com/excelvba5/EXCELVBA242.html

というわけで、DAOとかADOなどのミドルウェアを使う方法で試してみました。

で、今回は「読み込み」だけではなく「書き込み」も、操作対象のExcelファイルを「閉じたまま」できるかをテストしてみました。

その結果、以降のようになりました。
(『Excelの真の基礎~効率を良くする作表の基本手順(ちょっと詳細版)~Excelやパソコンを単なる電卓としてではなく、真のコンピュータとして使うために~Microsoft Queryやピボットテーブルを使えるようにするために』のような作表がしてあることが前提です。)

結論から言うと、「閉じたまま」、読み込みだけでなく「書き込み」も同時に行いたい場合は、

「xlsファイル+DAO 3.6(or ADO 2.1~2.5)」
(修正先のファイルがxls。操作側(操作元)はxlsmやPersonal.xlsb(≒xlsxファイル)でも可。)
※「Extended Properties」の設定値は「Excel8.0」。のみにします。
(他にもあるかもですが)
とりあえず「Excel 8.0;HDR=YES;IMEX=1」だと読み取り専用になってしまうっぽいです。
※DAOでは、Editメソッド+Updateメソッド、あるいは、SQLでの書き換えができます。(SQLの実行は、recordsetではなくdatabaseオブジェクトのExecuteメソッドで。 Excelの場合はSQL文の中でのシートの指定には、$付きのシート名を「`」=バッククォートで囲むことが必要。)


でやるか、もしくは、

「xlsx・xlsmファイル」を使うなら
DAOはやめて、ADOで、しかも「ACEエンジン系構文」でやる(JETエンジン系の構文は不可)。
(修正先のファイルがxlsx・xlsmの場合です。操作元はxlsmやPersonal.xlsb(≒xlsxファイル)でも可。)
※「Extended Properties」の設定値は「Excel 12.0」。のみにします。
(他にもあるかもですが)
とりあえず「Excel 12.0;HDR=YES;IMEX=1」だと読み取り専用になってしまうっぽいです。
※ADOでは、Updateメソッドのみ、あるいは、SQLでの書き換えができます。(SQLの実行は、ConnectionオブジェクトのExecuteメソッドで。Excelの場合はSQL文の中でのシートの指定には、$付きのシート名を「`」=バッククォートで囲むことが必要。)


のがエラーや不都合が少なそう・・・

です。

そのほかの方法は、閉じたまま処理できなかったり、面倒な不都合が出る可能性が上がってしまうかもです。

なお、いずれも、レコードセットのUpdateメソッドなどを使うか、SQLで「修正先のファイルを閉じたままで」書き換えができました。

以下の表に、実験結果とそのことを簡単にですが、まとめてみましたのでご参考にしてみてください。(ざっとでやったので間違ってるかもしれません。もしそうならごめんなさい。ご自分でも色々と試してみてください。)

・『 DAOやADOで、閉じたExcelファイルを、閉じたまま、「読み書き」することについて 』
https://euc-access-excel-db.com/00000WPhtml/dao_ado_close_file_read_write01.htm

以下はA4用紙1枚としての印刷用です(↓見る分にはCtrl++やCtrl+- 等々にて拡大縮小ができます。)
https://euc-access-excel-db.com/00000WPPDF/dao_ado_close_file_read_write01.pdf

  
  
★DAOでのSQLでの書き換え例

  
  
★ ADOでの、ACE系接続での、SQLで書き換えの例など
(無駄なプロシージャがあるかもしれないのですみません)