Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
刷新背景查询VBA_Vba_Excel - Fatal编程技术网

刷新背景查询VBA

刷新背景查询VBA,vba,excel,Vba,Excel,我想选择一个特定的数据范围,但当我尝试这样做时,它会显示“Runtime Error 1004 General ODBC Error”,并指出最后一行,.Refresh BackgroundQuery:=False。我是VBA新手,不能真正找到解决问题的方法。当我用selectedDate更改where问题中的日期时,它才开始显示该错误消息。您需要将所选日期连接到字符串中-您当前正在使用变量的文字名称作为日期 Sub OPInport(month As Integer, year As Inte

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

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

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

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

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

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

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

在开始之前的00:00:00部分结尾处似乎有问题。OK发现了问题,但仍然存在问题。刷新背景我已修改代码,因为还缺少一个撇号。在开始之前的00:00:00部分结尾处似乎有问题我已经修改了代码,因为还缺少一个撇号。