★★★Access2000VBA・Excel2000VBA独学~Accessのmdbのテーブルに、Excelシートのレコード(任意の列のみ)を追加するクエリについて~
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
プログラムについての質問サイトで、「Accessの既存のテーブルにxlsxシートの特定の列のみインポートしるには?」みたいな質問が出てました。
僕自身、よくわかってないのですみませんが、回答してみようと思って色々と調べてみました。
Accessはmdb拡張子、Excelはxls拡張子、で試してみましたところ、以下のSQLで追加できました。
1 2 3 4 5 6 7 |
' ' INSERT INTO T99_社員マスタ(社員番号,社員名,退社日付,入室ID) SELECT 社員番号,社員名,退社日付,入室ID From [Sheet1$] In "d:\1\社員マスタ.xls" "Excel 8.0;" ' ' |
「'」は「"」でもどっちでもいいみたいです。
Webで検索したら、Access(あるいはJET SQL?)のヘルプ?らしきページが出てきました。
https://docs.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/in-clause-microsoft-access-sql
あとで探してみたら、こんなのも出てきました。こちらのほうが詳しいっぽいですね。
こちらは必読だと思いました。
http://blogwizhook.blog.fc2.com/blog-entry-73.html
(※ IEで見てみて「スクリプトエラー」が多発してしまう方は、FireFoxかGoogleChromeで見てみてください。)
少し、引用します。
=====引用ここから==========
★ Excelを参照する場合
例 : シート全体を指定
~ FROM [シート1$] IN "C:\Users\UserName\Documents\Excel.xls" [Excel 5.0;]
例 : セル指定(B2からC10までを参照の場合)
~ FROM [シート1$B2:C10] IN "C:\Users\UserName\Documents\Excel.xlsx" "Excel 12.0 Xml;"
★ EXCELのオプション
~ FROM [シート1$] IN '' [Excel 8.0;DATABASE=C:\Users\UserName\Documents\Excel.xls;HDR=YES;IMEX=1;]
↑※この「''」(シングルクォーテーション2つ)がどうなるのか?このままなのか?がちょっとわかりません。
HDR : 先頭行をクエリのヘッダにするか否か
IMEX : 1にすると数値形式がテキスト形式にされ処理される(編集不可)
0 はエクスポート モードです。
1 はインポート モードです。
2 はリンク モード (完全な更新が可能) です。
詳細
[PRB] DAO の OpenRecordset を使用すると Excel の値として NULL が返される
https://support.microsoft.com/ja-jp/kb/194124
★ csv形式のテキストファイルに対して
~ FROM [textfile#csv] IN '' [Text;DATABASE=C:\Users\UserName\Documents;HDR=NO;]
ファイル名フルパスが
C:\Users\UserName\Documents\textfile.csv
の場合
DATABASEはフォルダの指定になる
ファイル本体名と拡張子を分ける記号が、ドット(.) からシャープ(#) に置き換えられる
=====引用ここまで==========
ちなみにですが、mdb側のクエリを保存して再度開いたら、以下のようなSQLに勝手に変換されてました。こんな書き方でもよいようですね。
1 2 3 4 5 6 7 |
' ' INSERT INTO T99_社員マスタ ( 社員番号, 社員名, 退社日付, 入室ID ) SELECT 社員番号, 社員名, 退社日付, 入室ID FROM [Sheet1$] IN 'd:\1\社員マスタ.xls'[Excel 8.0;]; ' ' |
あと、こんなWebページ。
『ADOでSQL Select * INTO文発行でExcel(*.xls)を作成する』
『ADO.NETを使用してEXCELファイルをACCESSにインポート時、自動で型変換されてしまう』
『Office Space: ADO を使用して Excel ワークシートにクエリを実行する』"Extended Properties=""Excel 8.0;HDR=Yes;"";"
『ADO.NETでExcelファイルに接続する』
『Microsoft Access 2010 を使用したデータ プログラミング (ACEエンジンの詳しい話とかも)』
『ADOでExcelファイルに接続』
ダメだったらすみません・・・。