12.0;HDR=YES;IMEX=1」だと読み取り専用になってしまうっぽいです。※ADOでは、Updateメソッドのみ、あるいは、SQLでの書き換えができます。(SQLの実行は、ConnectionオブジェクトのExecuteメソッドで。Excelの場合はSQL文の中でのシートの指定には、$付きのシート名を「`」=バッククォートで囲むことが必要。)のがエラーや不都合が少なそう・・・です。そのほかの方法は、閉じたまま処理できなかったり、面倒な不都合が出る可能性が上がってしまうかもです。いずれも、レコードセットのUpdateメソッドなどを使うか、SQLで「修正先のファイルを閉じたままで」書き換えができました。以下の表に、実験結果とそのことを簡単にですが、まとめてみましたのでご参考にしてみてください。(ざっとでやったので間違ってるかもしれません。ご自分でも色々と試してみてください。等々にて拡大縮小ができます。'操作元のこのプロシージャを書くxlsmはどこに置いてもOKです。チェックを入れておきます。'Shee1に最低限、「氏名」と「年齢」の列を作った適当な表を作成します。'Dドライブのルートには置きません。'「Sheet1」をシステムテーブルとして読み込む。'「$」を付けるとシステムテーブルになる。→「IMEX」の値を「=1」にしたときは、1行目を列名として読込む。→「IMEX」の値を「=1」にしたときは、1行目を列名として読込まない。'IMEX=1→表示されているセル書式の値でデータを吸い込む。(今回のテストでは完全にはそうはなりませんでした。バージョン番号」でGoogle検索。8.0で2000でも2010でも動いた。'指定したxlsファイルを、「閉じたままでも書き込み可能なモード」で開く。'表示するために使います。メソッドにておこないます。'「Sheet1の表の年齢が21の行はすべて、氏名を「100」に書き換える」、という意味です。'年齢が21の行がもし3行あったら、その3行すべての「氏名」が「100」に書き換わります。'シート(システムテーブル)の指定にはシート名を「`」(バッククォート)で囲むことが必要です。QueryでのSQLの仕様と同じです。'列名も同様にしないといけないこともあるかもしれません。(今回は無しでもOKでした。'書き込めず空白になりますので注意が必要です。'エラーも出ないまま空白になってしまうので注意が必要です。'自動的に判別・決定するようです。'その書き換え対象のセルはすべて空白に書き換わってしまいます。'SQLを実行(=修正先のExcelファイルを閉じたまま、書き換えを実行。'以下のコード、本当は要らないけど、念のため書いてしまいました。'表(=レコードセット)の中の最初の行(レコード)にスタンバイします。'最初の行から最後の行までを、以下のループ処理。'表示するデータを変数に格納して準備します。ReadByDao01()'操作元のこのプロシージャを書くxlsmはどこに置いてもOKです。チェックを入れておきます。'書き換え先のファイルは「D:\aa\DAOテスト.xls」として配置し、'Shee1に最低限、「氏名」と「年齢」の列を作った適当な表を作成します。'Dドライブのルートには置きません。'「Sheet1」をシステムテーブルとして読み込む。'「$」を付けるとシステムテーブルになる。→「IMEX」の値を「=1」にしたときは、1行目を列名として読込む。→「IMEX」の値を「=1」にしたときは、1行目を列名として読込まない。(どうやら数値は数値、文字列は文字列として読み込まれるようです)'IMEX=1→表示されているセル書式の値でデータを吸い込む。(今回のテストでは完全にはそうはなりませんでした。バージョン番号」でGoogle検索。8.0で2000でも2010でも動いた。8.0;HDR=NO;IMEX=1")'指定したxlsファイルを、「閉じたままでも書き込み可能なモード」で開く。DB.OpenRecordset(SheetName)'ただし、本サンプルでは、このレコードセットはSQLで書き換えるためのものではなく、'SQLでセルの値を書きかえたあとに、その結果をイミディエイトウィンドウに'表示するために使います。メソッドにておこないます。21;"'「Sheet1の表の年齢が21の行はすべて、氏名を「100」に書き換える」、という意味です。'年齢が21の行がもし3行あったら、その3行すべての「氏名」が「100」に書き換わります。21;"'シート(システムテーブル)の指定にはシート名を「`」(バッククォート)で囲むことが必要です。QueryでのSQLの仕様と同じです。)'列名も同様にしないといけないこともあるかもしれません。(今回は無しでもOKでした。)'各列において、その列のデータ型と違う型のデータを書き込むと'書き込めず空白になりますので注意が必要です。この場合、'エラーも出ないまま空白になってしまうので注意が必要です。'列のデータ型は、その列の最初の数行をExcelが見に行って、'自動的に判別・決定するようです。'例えば、数値型の列に、文字列型のデータを書き込むSQLを書いてしまうと'その書き換え対象のセルはすべて空白に書き換わってしまいます。'SQLを実行(=修正先のExcelファイルを閉じたまま、書き換えを実行。sqlstr01'以下のコード、本当は要らないけど、念のため書いてしまいました。'表(=レコードセット)の中の最初の行(レコード)にスタンバイします。RS.MoveFirst'最初の行から最後の行までを、以下のループ処理。(イミディエイトへの書き換え結果の表示の準備)'表示するデータを変数に格納して準備します。'ExecuteメソッドでSQLを実行する方法です。'使用する必要があります。'SQLを実行してみます。'ACEタイプの接続での書き換えです。'▲なお、事前に、MicrosoftQueryを作ってなくても書き換え可能です。以下、メインプログラムです。'Excelの画面描画をいったん停止。今の画面のまま変化させないようにする。'読み込み先のExcelファイルに接続。できるようにするための準備。'読み込み先のファイルに読み書きモードで(?)接続。'よくわかってません。'ここではACEエンジンタイプでの接続方法を使います。相手を閉じたまま書き換えたいので。'新しい(空の)SQLコマンド実行環境機能の作成。'その実行環境機能を読み込み先ファイルとの「接続」に紐付け(=関連付け)。'それを更新して、本当に「ターゲットを閉じたまま」書き換わったかをチェックします。Index部分は、「テーブル機能」のテーブル名。'インデックス番号でも可。'になっているので、ListObjects(Index)の指定が必要。みたいな感じになると思います。'未検証なので、ご自分でも確認してみてください。'Excelの画面描画を再開。画面の変化が普通に表示されるようにする。'その新規コマンド環境のExecuteメソッドでSQLを実行する方法です。'使用する必要があります。'SQLを実行すればよいのですが、あえて、Commandオブジェクトを使ってみます。'ACEタイプの接続での書き換えです。'▲なお、事前に、MicrosoftQueryを作ってなくても書き換え可能です。以下、メインプログラムです。'Excelの画面描画をいったん停止。今の画面のまま変化させないようにする。'読み込み先のExcelファイルに接続。できるようにするための準備。'読み込み先のファイルに読み書きモードで(?)接続。'よくわかってません。'ここではACEエンジンタイプでの接続方法を使います。相手を閉じたまま書き換えたいので。'新しい(空の)SQLコマンド実行環境機能の作成。'その実行環境機能を読み込み先ファイルとの「接続」に紐付け(=関連付け)。'それを更新して、本当に「ターゲットを閉じたまま」書き換わったかをチェックします。Index部分は、「テーブル機能」のテーブル名。'インデックス番号でも可。'になっているので、ListObjects(Index)の指定が必要。みたいな感じになると思います。'未検証なので、ご自分でも確認してみてください。'Excelの画面描画を再開。画面の変化が普通に表示されるようにする。UpdateByADO_ACE02()'不要なコメントやコードをすべて削除した状態'新規コマンド環境を作らずに、Connectionオブジェクトを直接使って'ExecuteメソッドでSQLを実行する方法です。オブジェクトを'使用する必要があります。メソッドを直接使って'SQLを実行してみます。'ACEタイプの接続での書き換えです。ACEタイプの接続でないと、閉じたまま書き換えられないので・・・)'▲なお、事前に、MicrosoftQueryを作ってなくても書き換え可能です。以下、メインプログラムです。'Excelの画面描画をいったん停止。今の画面のまま変化させないようにする。'========================'読み込み先のExcelファイルに接続。できるようにするための準備。'ADOにてのデータ接続オブジェクトの作成'読み込み先のファイルに読み書きモードで(?)接続。'よくわかってません。'ここではACEエンジンタイプでの接続方法を使います。相手を閉じたまま書き換えたいので。'新しい(空の)SQLコマンド実行環境機能の作成。'その実行環境機能を読み込み先ファイルとの「接続」に紐付け(=関連付け)。Nothing'========================'もしSheet1に、'「ターゲットファイルの書込み先シート」をソースにした、'すべての列と行を表示できるMicrosoftQueryの結果表を作ってあったら、'それを更新して、本当に「ターゲットを閉じたまま」書き換わったかをチェックします。Index部分は、「テーブル機能」のテーブル名。'インデックス番号でも可。'xlsの場合と違ってxlsm・xlsxの場合は、'MicrosoftQueryは「テーブル機能」のテーブルが'コンテナ(ガワ)のようになっていて、その中に結果表が埋め込まれている感じ'になっているので、ListObjects(Index)の指定が必要。みたいな感じになると思います。'未検証なので、ご自分でも確認してみてください。'Excelの画面描画を再開。画面の変化が普通に表示されるようにする。Connectionオブジェクトと関連付け(紐付け)させ、'その新規コマンド環境のExecuteメソッドでSQLを実行する方法です。オブジェクトを'使用する必要があります。メソッドを直接使って'SQLを実行すればよいのですが、あえて、Commandオブジェクトを使ってみます。'ACEタイプの接続での書き換えです。ACEタイプの接続でないと、閉じたまま書き換えられないので・・・)'▲なお、事前に、MicrosoftQueryを作ってなくても書き換え可能です。以下、メインプログラムです。'Excelの画面描画をいったん停止。今の画面のまま変化させないようにする。'========================'読み込み先のExcelファイルに接続。できるようにするための準備。'ADOにてのデータ接続オブジェクトの作成'読み込み先のファイルに読み書きモードで(?)接続。'よくわかってません。'ここではACEエンジンタイプでの接続方法を使います。相手を閉じたまま書き換えたいので。'新しい(空の)SQLコマンド実行環境機能の作成。'その実行環境機能を読み込み先ファイルとの「接続」に紐付け(=関連付け)。Nothing'========================'もしSheet1に、'「ターゲットファイルの書込み先シート」をソースにした、'すべての列と行を表示できるMicrosoftQueryの結果表を作ってあったら、'それを更新して、本当に「ターゲットを閉じたまま」書き換わったかをチェックします。Index部分は、「テーブル機能」のテーブル名。'インデックス番号でも可。'xlsの場合と違ってxlsm・xlsxの場合は、'MicrosoftQueryは「テーブル機能」のテーブルが'コンテナ(ガワ)のようになっていて、その中に結果表が埋め込まれている感じ'になっているので、ListObjects(Index)の指定が必要。みたいな感じになると思います。'未検証なので、ご自分でも確認してみてください。'Excelの画面描画を再開。画面の変化が普通に表示されるようにする。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。送信メールが受信トレイに入ってしまうトラブルの回避、など。ODBCでQueryTableオブジェクトを自動作成するサンプルコード)。2000以降の全バージョンで使えると思います。~ついでに、セルの値で結果表示を自動で切り替える「パラメータクエリ」のVBAでの自動作成も。~★★Access2000VBA・Excel2000VBA独学~Win32API。eChromeを例に。(Excel、Word、Access、などが32bit版のモノでしか使えませんが、OSは64bitでも大丈夫です。●2019年新春・NHKの「日曜討論」で公明党の山口那津男さんとかいう人が「景気もよくなってきて賃金は大きく改善」みたいなことを言っていましたが、なぜそんなウソをおっしゃるのか意味不明です。「安全」な、Youtube動画のダウンロード方法6つ。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。送信メールが受信トレイに入ってしまうトラブルの回避、など。ODBCでQueryTableオブジェクトを自動作成するサンプルコード)。2000以降の全バージョンで使えると思います。~ついでに、セルの値で結果表示を自動で切り替える「パラメータクエリ」のVBAでの自動作成も。technology.。