Может ли GetObject сделать это? - PullRequest
0 голосов
/ 15 мая 2019

В настоящее время я работаю над разработкой макроса, который будет вводить различные формы в базу данных доступа.

Из-за природы этой программы мне пришлось разделить основную программу на две подпрограммы и вызывать их, но теперь мне нужно использовать getobject для двойного вызова пути к файлу.

Я использую getobject, чтобы открыть файл, а затем использую myrec.fields (~ имя столбца ~) = xlsht.cells (1, "a") для заполнения различных значений столбцов.Я не уверен, есть ли другие «эффективные» способы сделать это.

Мне было интересно, можно ли использовать переменную вместо пути к файлу с помощью команды GetObject вместо необходимости вручную заменятьПуть к файлу в коде.

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

Я могу заставить это работать, используя это

Dim XL As Variant
Dim XLApp As Variant
Dim XLsht As Variant
Dim XLwrkbk As Variant

Set XL = CreateObject("Excel.Application")
Set XLwrkbk = GetObject(~file path~)
Set XLsht = XLwrkbk.Worksheets(1)
Set MyRec = CurrentDb.OpenRecordset("database name")

В идеале я хотел бы, чтобы это было

Dim filename As String
Dim XL As Variant
Dim XLApp As Variant
Dim XLsht As Variant
Dim XLwrkbk As Variant

filename = " ~insert file path~ "

Set XL = CreateObject("Excel.Application")
Set XLwrkbk = GetObject(filename)
Set XLsht = XLwrkbk.Worksheets(1)
Set MyRec = CurrentDb.OpenRecordset("database name")

Я получаю ошибку времени выполнения

Ошибка времени выполнения '5': неверный вызов процедуры или аргумент.

1 Ответ

0 голосов
/ 16 мая 2019

Попробуйте что-то вроде этого:

    Dim XL As New Excel.Application, Filename As String

    Filename = "~ your file ~"

    XL.Workbooks.Open (Filename)
    myrec.fields(~column name~) = XL.Worksheets(1).Range("A1").value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...