将具有变量名称的每日文件导入访问数据库

时间:2015-08-24 14:30:31

标签: ms-access access-vba ms-access-2010

如果这个问题已在某个地方提出并且我忽略了它,请提前道歉。我已经花了好几天时间而无法让它100%运行。

我正在尝试导入每天早上通过电子邮件发送到访问数据库的excel文件。该文件的日期部分每天都在变化。命名遵循“FTTQ m-dd-yyyy”每天的相同模式。文件名中显示的日期是前一个工作日,例如。 8/25收到8月24日的FTTQ电子邮件。下面的代码是我到目前为止,它将遍历文件夹,但是当它到达正确的一天时,它找不到它。我尝试了几个变种但Access在我尝试运行它时会一直崩溃。理想情况下,我需要Access来查找文件的最新日期并导入它,例如星期一进入并获取星期五/星期六的文件或在前一天获取文件。任何帮助将不胜感激。

Private Sub Button1_Click()
Dim strToday As String
Dim strFilePath as String
Dim strFile as String

strToday = Format(Date, "m-dd-yyyy")
strFilePath = "C:\Users\cole.stratton\Documents\Procurement\FTTQ 'Note:FTTQ is the beginning of the file name
strFile = Dir(strFilePath, "*.xlsx")

  Do While strFile <> ""
    If Right(strFile,14) = strToday & ".xlsx" Then
      DoCmd.TransferSpreadsheet, acImport, "tblTest",strFile, True
    End If
  strFile = Dir 'Note: I do not understand the point of this line or what it does or supposed to do.
  Loop
End Sub

2 个答案:

答案 0 :(得分:2)

要查找最新的现有文件,我会改变这样的循环:

Dim searchDate As Date
Dim strDate As String
Dim strFilePath As String
Dim strFile As String
Dim i As Long

' Search backwards from today for a file with the date name
For i = 0 To -7 Step -1
    searchDate = DateAdd("d", i, Date)
    strDate = Format(searchDate, "m-dd-yyyy")
    strFilePath = "C:\Users\cole.stratton\Documents\Procurement\FTTQ " & strDate & ".xlsx"
    Debug.Print "Looking for: " & strFilePath 
    ' Check if file exists
    strFile = Dir(strFilePath)
    If strFile <> "" Then
        ' Note that Dir() only returns the file name, so use strFilePath
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tblTest", strFilePath, True
        ' file found, exit loop
        Exit For
    End If
Next i

答案 1 :(得分:1)

***我假设您在实际代码中的strFilePath行中已经关闭了。****

这一行看起来像问题......

strFile = Dir(strFilePath, "*.xlsx")

此页面将显示使用目录的正确语法... http://www.techonthenet.com/excel/formulas/dir.php

strFile = Dir(strFilePath & "*.xlsx")&lt; - 您将文件扩展名放在属性所在的位置。

但是,您还需要更改日期。如果文件将有昨天的日期,而不是今天的... strToday = Format(Date-1, "m-dd-yyyy")

这一行...... strFile = Dir

将您的字符串设置为符合搜索条件的下一个文件名。