2017-08-22 1 views
1
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 

Ich möchte einen bestimmten Bereich von Daten auszuwählen, aber wenn ich versuche zu tun, dass es „Runtime Error 1004 Allgemeiner ODBC-Fehler“ sagt und verweist auf die letzte Zeile, .Refresh Background: = False. Ich bin ziemlich neu in VBA und kann wirklich keine Lösung für das Problem finden. Diese Fehlermeldung wurde erst angezeigt, als ich das Datum in der Where-Frage mit selectedDate änderte.Refresh Background VBA

Antwort

0

Sie müssen das ausgewählte Datum in Ihre Zeichenfolge verketten - was Sie gerade tun, verwendet den Literalnamen der Variablen als Datum.

"_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'})" 

Möglicherweise müssen Sie das verwendete Datumsformat ändern.

+0

scheint es am 00.00.00 Teil rechts ein Problem am Ende zu sein, bevor es –

+0

Compiler-Fehler zu erwarten beginnt: Liste seperator oder) –

+0

okey tha Problem gefunden, aber immer noch das Problem mit .REFRESH Background –