データ、データ、データ――データがなければデータベースはほとんど役に立ちません。ですから、Accessテーブルにデータを取り込む際に最もよく聞かれる質問の一つが、「大量のファイルを定期的にインポートしなければならない場合、どうすれば作業を楽にできますか?」であるのも当然です。これは非常に一般的な作業なので、当然ながら様々な方法がありますが、ここではそのうちの一つ、私の意見では最も簡単な方法を見ていきましょう。特に、定期的に、あるいはスケジュールに基づいてこの作業を行う場合に有効です。少しの計画(本当に少しだけです!)と少しのVBAの魔法があれば、準備は万端です。さあ、読み進めて始めましょう…
フォルダ内のすべてのExcelファイルをインポートする
この記事では、特定のフォルダー内に多数のExcelファイルをインポートする方法について説明しますが、csvファイルなども簡単にインポートできます。csvファイルを処理するようにコードを変更する方法については、後ほど説明します。
まず、コードに何をさせたいかを定義しましょう。
「特定のフォルダから既存のテーブルにすべてのファイルをインポートしたい–ファイルにヘッダー行があるかどうかも指定したい」
簡単そうに見えるので、これを行うためのコードを見てみましょう。
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
問題をチェックしています…

OK –まず最初に。 さまざまな状況でコードを可能な限り使用できるようにするために、パス名(ファイルが保存されている場所)、これらのファイルをインポートするテーブルの名前、およびこのフォルダー内のすべてのファイルにヘッダーかどうか(つまり、フィールド名はスプレッドシートの最初の行に表示されますか)。
ファイルを検索するコードの一部であるDir(path&“ \ *。xls”)は、指定されたパスにワイルドカードとファイル拡張子を追加することに気付くでしょう。 たとえば、特定の命名規則に一致するファイルのみをインポートする場合(たとえば、ファイル名の一部として「January」または「2017」を含むすべてのファイル)、コードを変更するのは非常に簡単なので、これについて言及します。 )。 必要に応じて、そのフィルターをパラメーターとしてサブルーチン呼び出しに追加することもできます。
とにかく、指定された基準に一致するファイル(この場合はを使用するフォルダー内の「.xls」ファイル)の場合、TransferSpreadsheetコマンドを使用してそのファイルをすぐにインポートしようとします。
ニーズに合わせてコードを変更する場所…
この時点で、スプレッドシートをインポートする代わりに、(「TransferText」コマンドを使用して)csvファイルをインポートするようにコードを変更できます。
次に、そのフォルダーにインポートするファイルがなくなるまで、コードがループします。
これは小さなコードですが、何度も何度も使用していることに気付くでしょう。
著者紹介:
Mitchell Pondは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQLの破損を修復する と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com