vba - MS Access:一键上传多个文件
问题描述
我正在尝试通过使用按钮一次将多个文件上传到访问数据库中。但是,一次只能上传一个文件。
单击按钮时,它会调用一个子过程。我的代码如下:
Private Sub btnImport_Click()
'Calls the procdure that imports raw files
Call Module1.ImportRawFiles
End Sub
Public Sub ImportRawFiles()
Dim oFileDiag As Office.FileDialog
Dim path As String: path = ""
Dim oFSO As New FileSystemObject
Dim FileSelected As Variant
Set oFileDiag = Application.FileDialog(msoFileDialogFilePicker) ''Picks file to import
oFileDiag.AllowMultiSelect = True ''Allows multiple files to be selected
oFileDiag.Title = "Please select the reports to upload"
oFileDiag.Filters.Clear
oFileDiag.Filters.Add "Excel Spreadsheets", "*.xlsx, *.xls" ''Only allows xlsx and xls file types to upload
If oFileDiag.Show Then
For Each FileSelected In oFileDiag.SelectedItems
Form_Homepage.txtFileName = FileSelected
Next
End If
If Nz(Form_Homepage.txtFileName, "") = "" Then
MsgBox "No files selected please select a file"
Exit Sub
End If
If oFileDiag.SelectedItems.Count > 0 Then path = oFileDiag.SelectedItems(1)
If Len(path) > 0 Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, oFSO.GetFileName(Form_Homepage.txtFileName), path, 1
MsgBox "The " & oFSO.GetFileName(Form_Homepage.txtFileName) & " file has been uploaded"
Else
MsgBox "File not found"
End If
有谁知道为什么只上传一个文件?
解决方案
您正在遍历所有选定的文件以进行分配Form_Homepage.txtFileName
,但在同一循环中不执行任何其他操作:
If oFileDiag.Show Then
For Each FileSelected In oFileDiag.SelectedItems
Form_Homepage.txtFileName = FileSelected
Next
End If
因此,在循环结束时,分配最后一个选定的文件,忽略所有其他文件,然后您以后的逻辑语句仅在该文件上执行。
一种解决方案是将您的操作逻辑移至同一循环。因此,将您的 IF 语句移到赋值循环中,这样它们就可以对变量的每次迭代赋值进行操作。
推荐阅读
- java - 无法使用 RMI 更新 JTextField
- jquery - 无法将 jQuery gem 安装到 rails
- google-apps-script - 更新另一个单元格时更新谷歌表格中的单元格
- amazon-web-services - Jenkins 没有连接到 AWS EC2 Ubuntu 上的 8080 端口
- sql - SQL -Oracle - 以在 BO 屏幕中输入的输入的确切顺序返回结果 - 解决方案已更新
- database-design - 如何设计数据库,使项目有很多(发票/报价)哪些订单
- matplotlib - Matplotlib - 设置刻度标签的背景颜色
- mongodb - 如果没有主键,如何更新 mongodb 集合
- tcl - 在 tcl/tk 中删除标签框中的行
- javascript - 具体网址路径