プロフィール
VBA

Access エクセル取込み 複数シート

Accessに複数シートをのエクセルを一括で取り込める機能が欲しかったのですが、ありませんでした。

作ってみたので残しておきます。

Accessファイルはこちらにあります。

https://yahoo.jp/box/rRqE-g

エクセル参照設定

まずAccessファイルにエクセルを取り込むときに、エクセルを操作しなければなりません。

そのため、エクセル操作ができるよう参照設定を行います。

手順はコードエディターから「ツール(T)」→「参照設定(R)」と移動します。

その後、Microsoft Excel 16.0 Object Libraryを追加してください。

16.0はバージョンに寄ります。

コード

処理の流れは以下の順です。
①ファイルダイアログを開いて取込むエクセルを選択
②エクセルのシート名を取得
③シート毎にテーブルに取込む

※1テーブルをAccessに作っておく必要があります。
※2テーブル名とシート名は同じ必要があります。

Access VBA ダイアログからパス取得VBAでファイルダイアログを開く処理について紹介します。 実際に作ったAccessファイルはこちらに載せています。 http...

補足

49行目のテーブルデータ削除についてです。

以下の処理で一度テーブルデータを一括削除してからテーブルに取込んでいます。

削除しないとどんどん行数が増え続けていくためです。

DoCmd.RunSQL “DELETE * FROM ” & SheetNames(i)の中身

指定したテーブル名を引数に受け取っています。

そして指定したテーブルのレコードすべてを削除するようにしています。

VBA C# オススメ参考書プログラミングの参考書でオススメの紹介をしていきます。 それぞれ私が使っている言語のみです。 VBAのオススメ参考書をExc...

255文字で切れる

一つ問題がありました。

この処理だけでは文字数が255を超える場合、文字が切れてしまう可能性があります。

たとえ、文字型を「長いテキスト」にしたとしてもです。

長いテキストにすれば1GB分まで格納できるはずなのですが、なぜ?と思っていました。

原因は最初の8行が255文字以上でないと、自動でMAX文字数を255とAccess側で判断してしまうためだそうです。

この対応は他で行って公開できればと思います。

<参考URL>
・xserver アクセスログ取得方法
https://www.xserver.ne.jp/manual/man_server_log.php
・Access2016で長いテキスト型でインポートエラー
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_winother/access2016%E3%81%A7%E9%95%B7%E3%81%84%E3%83%86/9e9d4345-0a9a-4004-9038-1da0150cf835?page=2
・もう一度学ぶMS-Access データ型
https://www.accessdbstudy.net/entry/20141027/p1#04020
・AccessVBAでテーブルを削除する3つの方法!コピペでOK!
https://eijiman.com/access-vba-table-delete/

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です