VBA代码在调试模式下按预期运行,但是在运行时模式下不会复制更新的数据

时间:2019-06-25 05:33:15

标签: sql excel vba oracle

我需要能够将字符串列表传递到SQL数据连接中,以验证数据集是否完全存在于数据库中。最初尝试在SQL代码的IN子句中将集合作为一个参数传递,但是参数不适用于Excel SQL连接中的IN子句。这导致我将集合中的每个字符串传递到SQL的LIKE子句中的参数中,该子句确实返回了我需要的数据。我面临的问题是,当我在Excel中返回带有SQL查询结果的表(传递了一个参数)时,当我去copy_paste到另一个表中以在调试时获取整个列表时模式下,代码按预期运行,但是在运行时模式下,代码似乎从最初的数据连接刷新中复制并粘贴了结果。

我尝试了多种不同的copy_paste方法,多种不同的值分配,并且尝试添加Wait命令但无济于事。即使我尝试使用其他方法(计算数据连接中的行数-没有行或count函数返回错误,请告诉我这是一条丢失的记录)。即使采用这种方法,它也可以在调试模式下工作,但在运行时会跳过它。

Public Sub GetTechLog()
    Dim Comp As Worksheet
    Dim TempDC As Worksheet

    Set Comp = Sheets("Comparison")
    Set TempDC = Sheets("Temp")

    Dim FlyDocData As ListObject
    Dim TRAXData As ListObject
    Dim TempData As ListObject

    Set FlyDocData = Comp.ListObjects("FlyDocs") 'Data to validate exists in TRAX
    Set TRAXData = Comp.ListObjects("TRAX") 'Table to hold CopyPaste data from TRAX
    Set TempData = TempDC.ListObjects("Table_TempFlyDocs") 'Data Connection to the database (TRAX)

    Dim i As Integer

    For i = 1 To FlyDocData.DataBodyRange.Rows.Count
        TempDC.Range("A10").Value = FlyDocData.DataBodyRange(i, 1).Value 'This is the parameter passed into the SQL data connection

        ActiveWorkbook.RefreshAll 'Refresh the SQL Data Connection and Table_TempFlyDocs

        Application.Wait (Now + TimeValue("00:00:05")) 'My attempt at adding Wait function to ensure the right data is copy pasted
        TempData.DataBodyRange.Copy 'Copy the newest refresh of the SQL data connection
        Application.Wait (Now + TimeValue("00:00:05"))
        Comp.Range("C" & i + 1).PasteSpecial xlPasteValuesAndNumberFormats 'Paste this information just into a cell in a different sheet
        Application.Wait (Now + TimeValue("00:00:01"))
    Next i
End Sub

我希望将每个数据连接刷新的值复制粘贴到单独的表或工作表中,以针对FlyDocData表中的数据列表记录所有信息。

这是我的第一篇帖子,如果对信息/误解有任何明显的遗漏,深表歉意。真的希望有人可以帮助我或提出一些我尚未想到的解决方法。令人沮丧的是,您的代码无法在调试器中运行,而在尝试运行时却无法运行!

0 个答案:

没有答案