Accessといっしょで、バージョン2000のころよりも書籍は退化している気がします。なんてかえってコスパが悪い。安い外注探してそっちに出した方がマシ。」ということの証明なのかもしれません。Excelファイルに対してだけは、「削除」ができない。↓このWebページの「8.データ削除」のところです。操作を行うことはできません。これはExcel固有の制限です。メッセージが表示されます。なんかそういう仕様?らしいです。ODBC」??多分マイクロソフトさんのページにも、どっかに「Deleteはサポートしてない」と書いてあるのではないかと思います。』のですが、ただし、書き込む先が「Excelのファイル」だと、xls、xlsx、xlsm、すべての拡張子で、削除ができないもようです。(もしかしたらテキストファイルとかもそうかもしれません。ExcelからAccessに対しては、SQL、あるいはDAOやADOのDeleteメソッドにて、レコードの削除ができます。MySQLなどに対してはどうかわかりません。)「このisamでは、リンクテーブル内のデータを削除することはできません」というエラーになってしまいます。これは、DAO・ADOそれぞれ単独の通常のUpdate操作でも、DAO・ADO+SQLの操作でも、同じエラーになってしまいます。相手が「Excelのシートやテキスト系のファイルなど」である限りは。Query」の画面からの「SQL実行」画面でも同じエラーで、VBAからQueryTableオブジェクトで操作したらODBCがらみのエラーになってしまいました。(何かうまい方法があるのかもしれませんが)なので、そのような場合は、次のような方法を取ることが必要です。削除フラグを立ててそのレコードだけ抽出や集計から除外する。削除フラグを立てて、SQL実行やQueryTableオブジェクト操作ではそのレコードだけ操作の対象から除外します。削除ができないと不便なように感じますが、SQLが分かる人なら、さほど不便でもないのではないかと思います。削除フラグが立ったレコードを除外した結果を、各々、別々のシートに表示しておいて、そのあと、その結果の表同士(=シート同時=システムテーブル同士)をリレーションさせればOKだと思います。いって、極端に不便になるわけでもないと思います。逆に、「削除フラグのついたデータばかり見てたら、何かがわかる(不正とか)場合もある」ので、その意味でも、「削除が絶対」ではありません。(レコードが消えないことを永遠に隠しておいて、ユーザーに「削除=消滅」とわざと誤解させておくと、不正が見つかる場合があります。いう仕様にするケースもあるようです。)もちろん、表と表のあいだの「整合性」を保つために、削除しない(できない)ことも多いです。「データベース処理」の場合は、「あえて削除をしない」という仕様も、少なくないと思います。(特にマスタじゃなくて明細のテーブルのほう)なので、削除できないことを、ことさら、気にする必要もないと思います。(b)削除したいレコード(行)だけ、すべての列を「Null」に書き換える。削除したいレコードだけ、主キーというか連番の値だけ残しておいて、あとは、すべての列を「Null」に書き換えます(上書きしてしまいます)。初期値で埋めてしまえば、削除しなくても集計には含まれないようにできます。すべての列を、たとえば件数も金額もNull(空白:不明な状態)、もしくはゼロなど、にしてしまえば、集計には何の影響もありません。・時刻の列には「00:00:00(シリアル値の0)」・・・などを上書きしておくのも良いかもしれません(その場合、不正やヒントの発見はできなくなってしまいますが)。すれば、集計に含まれないようになると思います。削除フラグやそれ以外の条件でフィルタで除外するか、もしくはVBA+フィルタでヒマな時に(そのExcelファイルを開いて、)自動的にALLで消してしまってもいいですし。SQLでのデータ書き換えの場合、True/Falseの列は、Nullを入れるとFalseになってしまうもようです。・・・というような恰好で適宜、削除をすればOKかと思います。'MoveLastメソッドで最後のレコードに移動(移動した行を削除する例です。ほかにも色んな削除の方法があります。最後の行に移動したのも特に意味はなく、単なる「移動した行の削除」の例として、です。'MoveLastメソッドで最後のレコードに移動(移動した行を削除する例です。ほかにも色んな削除の方法があります。最後の行に移動したのも特に意味はなく、単なる「移動した行の削除」の例として、です。DAO・ADO+SQLやQueryTableオブジェクト+SQLでのINSERT文の実行では、Max関数でのINSERTができない。(その他の関数も使えないかもです。INTO)ができました。テーブル名B;・・・という書き方だと「SQLのMAX関数」を使って、ちゃんとレコード追加できました。テーブル名Aとテーブル名Bは同じテーブル名でも異なるテーブル名でもOKです。同じテーブル名なら、現在レコード追加しようとしてるテーブルの連番の最大値が連番列に入りますし、異なるテーブル名なら、その異なるテーブルの最大値が書き込まれます。書いた列の数が同じで、それぞれの列にちゃんとそれぞれの値が正しく呼応していればOKです。他のテーブルから抽出した複数のレコードを、一括・一発で追加できるっぽいです・・・。)ただ、その複数レコードの連番の最大値をすべて+1していきたい場合は、複数一括でやると全部同じ値になってしまうかもしれません。(こちらも未確認です。SQL)では、連番列など、整数の列の最大値をMAX関数で求めることができます。これは、SELECT文だけのようでして、INSERT文には使えないもようです。調べておく必要があります。