2016-08-08 10 views
-1

背景:インポート特定のファイル

私は、自動的にアクセスにインポートしたいと思い、毎日の売上ファイルを受け取ります。彼らは現在、一貫した命名規則で特定のフォルダに保存されています。私はこれらのファイルを毎日見直さず、インポートプロセスをプッシュボタンの手順にしたいと考えています。フォルダには不要なファイルがありますので、ファイル全体をインポートするだけではありません。

ファイル命名規則: DAILY.SALES.20160611

(20160611は年である - 2016年、月 - 6月、および日の11日)に必要な

ヘルプ:

Iすべてのファイルをインポートできますが、 "Daily.Sales"で始まるファイルだけを指定する方法はわかりません。以下は、指定なしですべてをインポートできるコードです。私の前提は、パスやstrFileと何か関係がありますが、私が試したバリエーションのどれもうまくいきませんでした。

ファイルをアップロードする前にファイルが既にアップロードされているかどうかを実際に確認できれば便利ですが、使用するたびにテーブルを削除してさらに簡単なものをすべて再アップロードする必要がある場合に便利です。

Dim strFile As String 'Filename 
Dim strFileList() As String 'File Array 
Dim intFile As Integer 'File Number 
Dim filename As String 
Dim path As String 
DoCmd.SetWarnings False 
path = "C:\Desktop\Test\" 

    Dim objXL As Object 
    Dim wb As Object 

    Set objXL = CreateObject("Excel.Application") 

    strFile = Dir(path & "*.xls") 
    While strFile <> "" 

     Set wb = objXL.Workbooks.Open(path & strFile) 

     If wb.Sheets(1).Range("A1") <> "No Data" And wb.Sheets(1).Range("A1") <> "" Then 
      'add files to the list 
      intFile = intFile + 1 
      ReDim Preserve strFileList(1 To intFile) 
      strFileList(intFile) = strFile 
     End If 
     strFile = Dir() 
Debug.Print strFileList(intFile) 
     wb.Close False 
     Set wb = Nothing 
    Wend 

'see if any files were found 
If intFile = 0 Then 
MsgBox "No files found" 
Exit Sub 
End If 

'cycle through the list of files 
For intFile = 1 To UBound(strFileList) 
filename = path & strFileList(intFile) 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "Stage", filename, False 

Call Format_Staging_Table 
Call Copy_from_Stage_to_Master 
Call Clear_Staging_Table 

Next intFile 
DoCmd.SetWarnings True 

あなたは、彼らは私が...

誰でも提供することができるかもしれないことを任意のヘルプやアドバイスのおかげで、それを得れば、データをフォーマットしている、コール片を無視することができます!

+0

...基本的には...あなたのファイル名と一致するパスとフォルダを変更...あなたのニーズに合わせてそれを修正しますか? 'strFile = Dir(パス&" Daily.Sales * .xls ")' – HansUp

+0

"私が試したバリエーションのどれもうまくいきませんでした" - あなたが試したことを理解するのは難しい - - @HansUpの提案は、「Daily.Sales。。xls」と「Daily Sales」と同様に十分シンプルで機能しています。コードがアップロード前に既にアップロードされているかどうかをコードが実際に確認できるかどうかを知ることができればいいですか? " - あなたはMS-Accessを使用しています - それはあなたが転送スプレッドシート以上のことをしていると仮定しているデータベースですか?シンプルなログファイルテーブルと更新レコードセットとそれがテーブルにあるかどうかを確認するためのクエリで簡単に処理できます。 – dbmitch

答えて

関連する問題