0

私はこのことにかなり慣れていないので、誰かが私を助けてくれることを願っています.

セットアップ:データをインポートし、一連のクエリを実行して、月単位で結果をエクスポートする Access 2007 データベースを使用しています。

毎月のデータは、Excel スプレッドシートまたは「現在の」フォルダー内のテキスト ファイルとして保存されます。Access でテーブルとして追加するプロセスを容易にするために、各ファイルのかなり面倒なインポート手順を省略しました。

インポートするファイルがたくさんあるので、保存したすべてのインポートを一度に実行する簡単な VBA コードを作成しました。

Public Sub DatabaseImp()
DoCmd.RunSavedImportExport "Import-Excel1"
DoCmd.RunSavedImportExport "Import-Excel2"
DoCmd.RunSavedImportExport "Import-Txt1"
DoCmd.RunSavedImportExport "Import-Txt2"
DoCmd.RunSavedImportExport "Etc....."
End Sub

また、このコードを実行するマクロを作成しましたが、すべて正常に動作します。

しかし、

問題: 月によって、特定のファイルが「現在の」フォルダーに含まれ、他のファイルは含まれません。

たとえば、今月、データベースにインポートする「Excel2」ファイルがないとします。

インポートするものがある場合にのみインポートを実行しようとするように、上記のコードを変更する方法はありますか?

「Excel2」のインポートを無視して、手動で簡単に実行できることを理解しています。ただし、プロセスを自動化しておきたいと思います。

各行の最後に追加できる条件付き IF ステートメントを探しています。

DoCmd.RunSavedImportExport "Import -Excel1" 
 (ONLY IF there is an excel1 file in the 'current' folder to import)

アイデア、誰か?

ありがとう、

4

1 に答える 1

1

Dir コマンドを使用できます。結果が空の文字列の場合、それは存在しません。

したがって、Windows マシンでは、Dir("C:\Windows\explorer.exe")は explorer.exe を返しますが、Dir("C:\Windows\bumblebee.exe") は "" を返します。

そのため、If ステートメントを設定します。

If Len(Dir(YourFile)) > 0 then
  DoCmd.RunSavedImportExport "Import -Excel1"
End if
于 2013-06-10T20:31:42.287 に答える