【问题标题】:Refresh BackgroundQuery VBA刷新后台查询 VBA
【发布时间】:2017-08-22 11:19:55
【问题描述】:
Sub OPInport(month As Integer, year As Integer)
'
' Macro6 Macro
'F und G

'
    Dim selectedRange As Date
    Dim WrkBook As Workbook
    Dim WrkSheet As Worksheet
    Set WrkBook = ActiveWorkbook
    Set WrkSheet = ActiveSheet

selectedRange = DateSerial(year, month, 1)
MsgBox selectedRange

WrkBook.Sheets(1).Columns("G:H").NumberFormat = "dd.mm.yyyy"

Range("$A$1").Value = "Change"

Application.CutCopyMode = False
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "ODBC;DSN=OpsApps;UID=Alligatoah;Trusted_Connection=Yes;APP=Microsoft Office 2016;WSID=AT000616;DATABASE=OpsApps" _
    , Destination:=Range("$B$1")).QueryTable
    .CommandText = Array( _
    "SELECT IPM_V_TV_URB.Customer, IPM_V_TV_URB.KNUM, IPM_V_TV_URB.DMRF, IPM_V_TV_URB.HeaderBoM, IPM_V_TV_URB.ProgramReleasedCosts, IPM_V_TV_URB.PlnLaunch, IPM_V_TV_URB.SystemSDate, IPM_V_TV" _
    , _
    "_URB.ActualCosts" & Chr(13) & "" & Chr(10) & "FROM OpsApps.dbo.IPM_V_TV_URB IPM_V_TV_URB" & Chr(13) & "" & Chr(10) & "WHERE (IPM_V_TV_URB.SystemSDate>={ts selectedRange & 00:00:00'})" _ 
    )
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Table_Query_from_OpsApps"
    .Refresh BackgroundQuery:=False
End With

我想选择特定范围的数据,但是当我尝试这样做时,它会显示“运行时错误 1004 常规 ODBC 错误”并指出最后一行,.Refresh BackgroundQuery:=False。我对 VBA 很陌生,无法真正找到解决问题的方法。当我用 selectedDate 更改 where 问题中的日期时,它才开始显示该错误消息。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要将所选日期连接到您的字符串中 - 您当前正在做的是将变量的文字名称用作日期。

    "_URB.ActualCosts" & Chr(13) & "" & Chr(10) & "FROM OpsApps.dbo.IPM_V_TV_URB IPM_V_TV_URB" & Chr(13) & "" & Chr(10) & "WHERE (IPM_V_TV_URB.SystemSDate>={ts '" & Format(selectedRange, "yyyy-mm-dd") & " 00:00:00'})"
    

    您可能需要更改使用的日期格式。

    【讨论】:

    • 在开始前的 00:00:00 部分结尾似乎有问题
    • okey 发现了这个问题,但 .refresh BackgroundQuery 仍然存在问题
    • 我已经修改了代码,因为还缺少一个撇号。
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2019-07-21
    • 2013-04-28
    • 2021-12-02
    • 1970-01-01
    • 2013-09-05
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多