MS Access: загрузка нескольких файлов с одной кнопки - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь загрузить несколько файлов одновременно в базу данных доступа с помощью кнопки. Однако одновременно будет загружаться только один файл.

При нажатии кнопки вызывается подпроцедура. Мой код ниже:

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 

Кто-нибудь знает, почему загружается только один файл?

1 Ответ

1 голос
/ 22 апреля 2020

Вы перебираете все выбранные файлы, чтобы назначить Form_Homepage.txtFileName, но затем ничего не делаете в том же l oop:

If oFileDiag.Show Then
    For Each FileSelected In oFileDiag.SelectedItems
           Form_Homepage.txtFileName = FileSelected
    Next
End If

Итак, к концу l oop, последний выбранный файл назначается, игнорируя все остальные, тогда ваши последующие операторы logi c будут работать только с этим одним файлом.

Одним из решений будет перемещение ваших логов действий c к тому же l oop. Поэтому перенесите операторы IF в присваивание l oop, чтобы они работали с каждым итеративным присваиванием вашей переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...