在我的数据库中,我可以使用以下命令创建命令按钮导入文件: DoCmd.TransferText acImportDelim,“导入的原始数据_导入规范”,“导入的原始数据”,D:\Users\Denise_Griffith\Documents\Griffith\PRIME RECON FILES\jdaqawmslesfilesemailDLX_SHPREC_2017-04-26_03-33-47.csv,True, “”
但我想让用户选择要导入的文件,因为文件名根据创建的日期和时间每天都不同。我找到了这个网站( http://access.mvps.org/access/api/api0001.htm ),并且能够弹出对话框以允许用户导航和选择文件,但我不知道如何合并它,因此所选文件是使用规范导入的创建,并放入适当的表中。
请帮忙!
最佳答案
您需要设置对 Microsoft Office 对象库的引用。
Public Sub ImportDocument()
On Error GoTo ErrProc
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.InitialFileName = "Some folder"
.Title = "Some Title"
With .Filters
.Clear
.Add "CSV documents", "*.csv", 1
End With
.ButtonName = " Import Selected "
.AllowMultiSelect = False
If .Show = 0 Then GoTo Leave
End With
Dim selectedItem As Variant
For Each selectedItem In fd.SelectedItems
DoCmd.TransferText acImportDelim, "Raw Data from Import_ Import Specification", "Raw Data from Import", selectedItem, True, ""
Next
Leave:
Set fd = Nothing
On Error GoTo 0
Exit Sub
ErrProc:
MsgBox Err.Description, vbCritical
Resume Leave
End Sub
根据用户评论进行更新:
您必须将Sub更改为Function并检查返回值。
最简单的方法是返回一个 Boolean
,其中 FALSE
表示中止,TRUE
表示成功。但是,通过这样做,您可以排除错误场景,因为中止和错误都将返回FALSE
。
因此您可以返回一个Long
值,例如0、1、2分别表示Aborted、Success和Error。为了避免“魔数(Magic Number)”,我将创建并返回一个 Enum 类型,如下所示:
Public Enum TaskImportEnum
Aborted = 0 'default
Success
Failure
End Enum
Public Function ImportDocument() As TaskImportEnum
On Error GoTo ErrProc
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.InitialFileName = "Some folder"
.Title = "Dialog Title"
With .Filters
.Clear
.Add "CSV documents", "*.csv", 1
End With
.ButtonName = " Import Selected "
.AllowMultiSelect = False 'Change this to TRUE to enable multi-select
'If aborted, the Function will return the default value of Aborted
If .Show = 0 Then GoTo Leave
End With
Dim selectedItem As Variant
For Each selectedItem In fd.SelectedItems
DoCmd.TransferText acImportDelim, "Raw Data from Import_ Import Specification", "Raw Data from Import", selectedItem, True, ""
Next selectedItem
'Return Success
ImportDocument = TaskImportEnum.Success
Leave:
Set fd = Nothing
On Error GoTo 0
Exit Function
ErrProc:
MsgBox Err.Description, vbCritical
ImportDocument = TaskImportEnum.Failure 'Return Failure if error
Resume Leave
End Function
最后,您可以像这样调用该函数:
Sub Import()
Dim status_ As TaskImportEnum
status_ = ImportDocument
Select Case status_
Case TaskImportEnum.Success:
MsgBox "Success!"
Case TaskImportEnum.Failure:
MsgBox "Failure..."
Case Else:
MsgBox "Aborted..."
End Select
End Sub
您可以在此处阅读有关 Enum
类型的更多信息:http://www.cpearson.com/excel/Enums.aspx
关于ms-access - MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744977/