2016-08-08 11 views
-1

Hintergrund:Import bestimmte Dateien von Ordnern in Access-Tabelle

Ich erhalte eine tägliche Verkauf Dateien, die ich automatisch in dem Zugang importieren möchte. Sie werden derzeit in einem bestimmten Ordner mit einer konsistenten Namenskonvention gespeichert. Ich überprüfe diese Dateien nicht jeden Tag und möchte den Importprozess zu einem Push-Button-Verfahren machen. Es gibt andere Dateien in dem Ordner, die ich nicht brauche, sodass ich nicht einfach die gesamte Datei importieren kann.

Dateinamenskonvention: DAILY.SALES.20160611

(die 20.160.611 ist das Jahr - 2016 Monat - Juni und Tag 11.)

Hilfe benötigt:

I kann alle Dateien importieren, aber ich kann nicht herausfinden, wie nur diejenigen Dateien angegeben werden, die mit "Daily.Sales" beginnen. Unten ist der Code, den ich habe, der alles ohne Angabe importieren kann. Meine Annahme ist, dass es etwas mit dem Pfad oder strFile zu tun hat, aber keine der Variationen, die ich versucht habe, hat funktioniert.

Es wäre schön, wenn der Code tatsächlich überprüfen könnte, ob die Datei bereits hochgeladen wurde, bevor sie hochgeladen wird, jedoch wenn ich die Tabelle nach jedem Gebrauch löschen und alles noch einfacher hochladen muss.

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 

Sie können den Anruf Stücke ignorieren, sie sind die Daten zu formatieren, wenn ich es in bekommen ...

Vielen Dank für jede Hilfe oder Rat, dass jemand in der Lage sein könnte, zur Verfügung zu stellen!

+0

Haben Sie dies wünschen? 'strFile = Dir (Pfad &" Daily.Sales * .xls ")' – HansUp

+0

"keine der Variationen, die ich versucht habe, hat funktioniert" - schwer zu verstehen, was Sie versucht haben - Fast jede DOS-Datei seecrh spec funktioniert - @HansUp Vorschlag ist einfach genug und funktioniert - wie '' Daily.Sales. *. Xls "' und '" Daily.Sales. ????????. Xls "' - und dann sagst du "t Sei nett, wenn der Code tatsächlich prüfen könnte, ob die Datei bereits hochgeladen wurde, bevor du sie hochlädst. "- Du verwendest MS-Access - das ist eine Datenbank, von der du erwartest, dass du mehr als nur Spread-Pakete überträgst? Es wird leicht mit der einfachen Protokolldateitabelle umgehen und Recordset aktualisieren und eine Abfrage, um zu überprüfen, ob es in der Tabelle ist. – dbmitch

Antwort

Verwandte Themen