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!
Haben Sie dies wünschen? 'strFile = Dir (Pfad &" Daily.Sales * .xls ")' – HansUp
"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