(←その他の「できないこと」も書いてあります。「あえて削除しない」ことも結構あります。不正対策や整合性維持のためです。基本、削除フラグを立てるだけでも対応できます。読み込みだけに使っても構いません。はじめにExcelで、SQLを使って閉じたままのファイルの内容を、「閉じたまま書き換える」ことができます。Queryを使って、既存のxlsファイルのある表を書き換えるテスト結果をご紹介します。Queryにて、シート上になんらかの他のxlsの表データが表示されている状態」を前提としています。Queryを使いつつ、SQLの実行をすると、プログラムコードが一番少なくなるのではないかと思います。した書き換えなどにつかえると思います。(a)について解凍して、「test88」というフォルダをDドライブにコピペします。「test03.xls」で色々と試せます。「test03.xls」のSheet1には、下図のように、「test88」というフォルダの中の、「test01.xls」というxlsの同じくSheet1を読みに行ったMicrosoftQueryの結果の表が、表示されています。その「test01.xls」の内容を、「test03.xls」からSQLを使って、「test01.xls」が「閉じたまま」、書き換えます。適当な内容に書き換えてから「test11()」プロシージャを実行します。今現在のサンプルには、「D:\test88\」フォルダの「test01.xls」のSheet1の内容が、「test03.xls」のSheet1に表示されています。Queryの結果の表」なんですけれども、もし、その結果の表を「test03.xls」のSheet2に表示したかったり、今のSheet1の結果表をいったん消して作り直したかったり、という場合は・・・、(イ)手作業で作る・作りなおす。(ロ)VBAで作る・作りなおす。この場合、一回作れば、(同じ表を常に表示したいのであれば)それ以降は基本的にはやる必要はありません。具体的には、次のようにします。この(イ)手作業で作る・作りなおす。(ロ)VBAで作る・作りなおす。ここでは、「もしSheet2にMicrosoftQueryの結果の表(=QueryTablesオブジェクト)が作って無かったら、作って表示させる・・・」、というプログラム内容となっています。プログラム中の「Worksheets("Sheet2").」を「Activesheet.」に置換等をして書き換えると、Sheet2だけでなく、現在表示しているシートに結果の表が生成されます。(あと、「B2」セルを起点として表が表示される設定になっていますので、もし「A1」セルを起点としたかったら「Destination:=Worksheets("Sheet2").Range("B2")」の行の「B2」を「A1」に書き換えてから実行してください。'無かったら、作って表示させる処理。'以下の内容でSheet2にMicrosoftQueryの結果の表を作成。'良いのではないかと思います。'でOKかと思います。'「B2」セルを起点としてMicrosoftQueryの結果の表を作成します。'現在表示しているシートに結果の表が生成されます。'シート名に「$」を末尾に付けている・・・」ということになります。'「`」バッククォートで囲んでいます。'バッククォートはShiftキーを押しながら「@」を押します。'あったら何もしないで次へ。'以下の2行のコメントアウトをはずしてテストしてみます。test300()'もしSheet2にMicrosoftQueryの結果の表(=QueryTablesオブジェクト)が'無かったら、作って表示させる処理。Then'もしSheet2にMicrosoftQueryの結果の表が'無かったら以下の処理'以下の内容でSheet2にMicrosoftQueryの結果の表を作成。'フルパスは恐らくUNCパス、つまり、他のPCの共有フォルダのxlsでも'良いのではないかと思います。AArray(・・・)」の行のそのSQLの内容'でOKかと思います。''今回のこの例でのSQL文では、Sheet2に対して、'「B2」セルを起点としてMicrosoftQueryの結果の表を作成します。''なお、「Worksheets("Sheet2").」を「Activesheet.」に書き換えると、'現在表示しているシートに結果の表が生成されます。''また、SQL文(表操作の命令文)の中では、'test01.xlsのSheet1(=システムテーブル)のことを「`Sheet1$`」と'表現しているのですが、これは「システムテーブルと認めさせるために、'シート名に「$」を末尾に付けている・・・」ということになります。QueryのSQLの仕様として、そのテーブル名を'「`」バッククォートで囲んでいます。'バッククォートはShiftキーを押しながら「@」を押します。WithElse'もしすでに、Sheet2にMicrosoftQueryの結果の表が'あったら何もしないで次へ。'以下の2行のコメントアウトをはずしてテストしてみます。▼(01)汎用化していないコードの例コメントがめっちゃ多いので、無駄だったら全部消して見てみてください。サンプルファイルの「Module1」の内容です。汎用化してない、テスト的なプログラムコードです。'SQLのUPDATE句を使って、閉じたxlsファイルを「閉じたまま」書き換えるプロシージャです。'ここではすでに作成された、「`D:\test88\test01.xls`」のデータが書き換えられます。'事前にシートに表示されていることが前提です。'おそらくですが、UNCパス(すなわち他のPCのxlsファイル)も使える気がします。'というエラーを回避しています。格納するための変数の宣言。