Выберите файл в диалоговом окне, поместите путь в текстовое поле и другую кнопку для импорта в виде таблицы. - PullRequest
1 голос
/ 27 сентября 2019

VBA, чтобы открыть диалоговое окно, нажав кнопки, выбрать файлы по отдельности, поместить путь в несколько текстовых полей, нажать другую кнопку, чтобы импортировать файлы

Я искал в Интернете, но всекоды имеют как выбор, так и импорт в одной программе

'Module
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 "TXT documents", "*.txt", 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, "team_Specs", "team", selectedItem, True, ""
        '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

'Form
Private Sub Command2_Click()
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

1 Ответ

0 голосов
/ 27 сентября 2019

Вам нужно разбить подпрограмму импорта на несколько задач.

Функция выбора файла возвращает только путь к файлу выбранного документа, а затем этот путь вставляется в соответствующий текстовый блок.

Затем кнопка импорта проверяет, имеет ли текстовое поле значение, и да, оноимпортирует его.

1.Выбрать файл.


Private Sub ButtonSelect_Click()

    Dim file_ As String
        file_ = SelectDocument()

    'Selection was made?
    If file_ <> vbNullString Then TextBoxFilePath.Value = file_

End Sub

Функция для выбора файла.


Public Function SelectDocument() As String
    On Error GoTo Trap

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .InitialFileName = "Some folder"
        .Title = "Some Title"
        With .Filters
            .Clear
            .Add "TXT documents", "*.txt", 1
        End With
        .ButtonName = " Import Selected "
        .AllowMultiSelect = False
    End With

    'if a selection was made, return the file path
    If fd.Show = -1 Then SelectDocument = fd.SelectedItems(1)

Leave:
    Set fd = Nothing
    On Error GoTo 0
Exit Function

Trap:
    MsgBox Err.Description, vbCritical
    Resume Leave
End Function

2.Импорт, если выбор сделан.


Private Sub ButtonImport_Click()
    With TextBoxFilePath
        If Not IsNull(.Value) Then
            DoCmd.TransferText acImportDelim, "team_Specs", "team", .Value, True, ""
        End If
    End With
End Sub

Вам необходимо изменить названия кнопок и текстовых полей.

...