首页 > 解决方案 > Expression.Error:键与表中的任何行都不匹配

问题描述

我正在尝试修复我的同事创建的 Access/Excel 工具,但我不知道该怎么做。她刚离开公司,所以我无法联系她询问有关此工具的问题。

她在 Excel 工作表中设置了一个按钮。按下时,该按钮应该创建一个新工作表并从 Access 数据库中拉入一个 QueryTable。

这是她的代码:

Sub Import()
'
' Import Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'

    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=1stEmail-MailMergeReady;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [1stEmail-MailMergeReady]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

按下按钮时,它会成功创建新工作表,然后在创建表时冻结 ( ExternalData_1: Getting Data ...)。我收到此错误消息:

Expression.Error: The key didn't match any rows in the table

当我单击调试时,它会突出显示该.Refresh BackgroundQuery:=False行。

我尝试用简单的方式替换该行.Refresh并收到相同的错误消息。我还确认它指向的所有位置都是有效的并且根本没有移动。

任何帮助是极大的赞赏!

标签: excelms-access

解决方案


推荐阅读