Как импортировать данные Excel, используя динамический путь c, созданный / Ввод в форму доступа - PullRequest
2 голосов
/ 26 февраля 2020

В MS Access я создал форму с именем формы «Форма» и создал текстовое поле с именем «Путь».

Когда я вписываю путь в форму с помощью «c: Рабочий стол ...» ..xlsx». Я должен иметь возможность импортировать данные из Excel в Access.

Я пытался использовать версию макроса в Access, используя приведенный ниже код, но я обнаружил ошибку.

Function Import()
    On Error GoTo Import_Err
    Dim Str As String
        Str = Forms!Form!Path.Caption
            DoCmd.TransferSpreadsheet acImport, 10, "EM", Str, True, ""
    Import_Exit:
        Exit Function
    Import_Err:
        MsgBox Error$
        Resume Import_Exit
End Function

Ошибка : «Объект не поддерживает это свойство или метод».

Поскольку я планирую передать файл для запуска другим, у них будет другой путь, поэтому нам нужно добавить префикс в их систему , Таким образом, вместо этого, если у нас есть путь к форме, пользователи могут ввести путь в форму и запустить его.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Используйте это:

Str = Forms!Form.Path

Я бы (на вашем месте) использовал диалог открытия файла вместо того, чтобы позволить пользователям вводить файл с путем:

        Set FD = Application.FileDialog(msoFileDialogOpen)
        Dim FileChosen As Integer
        FileChosen = FD.show
        FD.Title = "Choose workbook"
        FD.InitialView = msoFileDialogViewList    
        FD.Filters.Clear
        FD.Filters.add "Excel workbooks", "*.xlsx"
        FD.Filters.add "All files", "*.*"
        FD.FilterIndex = 1
        FD.ButtonName = "Choose this file"
        If FileChosen <> -1 Then
        'didn't choose anything (clicked on CANCEL)
            MsgBox "No file opened", vbCritical
            GoTo Exit_Function
        Else
            fileNamePath = FD.SelectedItems(1)
        End If
        Set FD = Nothing

и после этого

DoCmd.TransferSpreadsheet acImport, 10, "EM", fileNamePath , True
0 голосов
/ 26 февраля 2020

Элемент управления Access Textbox не имеет свойства Caption . Но у него есть два других свойства:

AFAICT, Text возвращает текст, находящийся в данный момент в текстовом поле, а Value возвращает последнее сохраненное значение. Если пользователь изменил текст в текстовом поле, но фокус все еще находится в текстовом поле, Текст вернет введенное пользователем новое значение, но Значение вернет значение перед пользователем

Обратите внимание, что вы можете получить и установить Текст только тогда, когда элемент управления имеет фокус.

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