【问题标题】:Can GetObject do this?GetObject 可以做到这一点吗?
【发布时间】:2020-07-15 18:22:56
【问题描述】:

我目前正在开发一个宏,可以将各种表单输入到 access 数据库中。

由于这个程序野兽的性质,我不得不将我的主程序分成两个子程序并调用它们,但是我现在需要使用 getobject 调用文件路径两次。

我使用 getobject 打开一个文件,然后使用 myrec.fields(~column name~) = 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”: 无效的过程调用或参数。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    试试这样的:

        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
    

    【讨论】:

    • 我不完全知道这是否符合我的需要,我确实用更多信息更新了我的帖子,因为我意识到我没有解释我正在用这些数据做什么。也许这有帮助?
    • 您不需要 GetObject 来获取 A1 单元格的值。我更新了我的答案。
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多