フォルダ内のすべてのファイルをアクセステーブルにインポートする方法

今すぐ共有:

データ、データ、データ――データがなければデータベースはほとんど役に立ちません。ですから、Accessテーブルにデータを取り込む際に最もよく聞かれる質問の一つが、「大量のファイルを定期的にインポートしなければならない場合、どうすれば作業を楽にできますか?」であるのも当然です。これは非常に一般的な作業なので、当然ながら様々な方法がありますが、ここではそのうちの一つ、私の意見では最も簡単な方法を見ていきましょう。特に、定期的に、あるいはスケジュールに基づいてこの作業を行う場合に有効です。少しの計画(本当に少しだけです!)と少しのVBAの魔法があれば、準備は万端です。さあ、読み進めて始めましょう…

フォルダ内のすべてのExcelファイルをインポートする

アクセスする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

問題をチェックしています…

Accessデータベースの破損このコードの仕組みについて詳しく説明する前に、上記のコードにはエラーチェックが含まれていないことに注意してください。これは、コードを読みやすくするための意図的なものですが、エラー処理コードを追加することを強くお勧めします。あなたのデータベースにあなたがチャンスを保つように Accessデータベースの破損 最小限に!

OK –まず最初に。 さまざまな状況でコードを可能な限り使用できるようにするために、パス名(ファイルが保存されている場所)、これらのファイルをインポートするテーブルの名前、およびこのフォルダー内のすべてのファイルにヘッダーかどうか(つまり、フィールド名はスプレッドシートの最初の行に表示されますか)。

ファイルを検索するコードの一部であるDir(path&“ \ *。xls”)は、指定されたパスにワイルドカードとファイル拡張子を追加することに気付くでしょう。 たとえば、特定の命名規則に一致するファイルのみをインポートする場合(たとえば、ファイル名の一部として「January」または「2017」を含むすべてのファイル)、コードを変更するのは非常に簡単なので、これについて言及します。 )。 必要に応じて、そのフィルターをパラメーターとしてサブルーチン呼び出しに追加することもできます。

とにかく、指定された基準に一致するファイル(この場合はを使用するフォルダー内の「.xls」ファイル)の場合、TransferSpreadsheetコマンドを使用してそのファイルをすぐにインポートしようとします。

ニーズに合わせてコードを変更する場所…

この時点で、スプレッドシートをインポートする代わりに、(「TransferText」コマンドを使用して)csvファイルをインポートするようにコードを変更できます。

次に、そのフォルダーにインポートするファイルがなくなるまで、コードがループします。

これは小さなコードですが、何度も何度も使用していることに気付くでしょう。

著者紹介:

Mitchell Pondは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQLの破損を修復する と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。