【发布时间】:2018-08-22 21:46:25
【问题描述】:
我正在尝试导入一大堆 Excel 文件,这些文件以今年迄今为止的客户名称分隔。现在,这些文件包含许多记录,并且每个月的每一天都有不同的工作表。代码的每个单独部分似乎都有效。我之前已经单独测试过。但是,如果当天是周末或节假日,则没有电子表格。我处理了周末。但是 On Error Resume Next 似乎没有正确处理假期。谁能指出我正确的方向?
注意:客户端和路径将被硬编码...原因。无关的消息框用于测试目的。电子表格的命名约定是 _#。如果您知道执行此操作的更好方法,请随时告诉我。
Public Function importer()
Dim file As String, path As String, i As Integer, datevar As Date, month As Integer, fDate As Variant
path = "path"
file = Dir(path & "*client*")
DoCmd.RunSQL ("DELETE * FROM [table]")
Do While file <> ""
If file Like "*2018*" Then
month = GetMonth(file)
MsgBox (path & file)
For i = 1 To 31
If IsDate(month & "/" & i & "/2018") = True Then
datevar = CDate(month & "/" & i & "/2018")
If IsDate(datevar) = True And datevar < CDate("8/8/2018") Then
fDate = Weekday(month & "/" & i & "/2018", vbMonday)
If fDate < 5 Then
On Error Resume Next
DoCmd.TransferSpreadsheet acImport, , "table", path & file, True, "_" & i
End If
End If
End If
Next i
Else
MsgBox ("No")
End If
file = Dir
Loop
End Function
Public Function GetMonth(file) As Variant
Dim monthnumberx As Integer
Select Case True
Case file Like "*January*"
monthnumberx = 1
Case file Like "*February*"
monthnumberx = 2
Case file Like "*March*"
monthnumberx = 3
Case file Like "*April*"
monthnumberx = 4
Case file Like "*May*"
monthnumberx = 5
Case file Like "*June*"
monthnumberx = 6
Case file Like "*July*"
monthnumberx = 7
Case file Like "*August*"
monthnumberx = 8
Case file Like "*September*"
monthnumberx = 9
Case file Like "*October*"
monthnumberx = 10
Case file Like "*November*"
monthnumberx = 11
Case file Like "*December*"
monthnumberx = 12
End Select
GetMonth = monthnumberx
End Function
【问题讨论】:
标签: excel vba ms-access import error-handling