2017-05-18 2 views
0

'Unten ist der aktuelle Code, den ich habe und es wird in die Excel-Arbeitsmappe und Arbeitsblatt korrekt exportieren. Das einzige Problem ist, dass ich die Daten, die exportiert werden sollen, um einen Monatsendedatumsbereich (Beispiel: 31.01.2017 bis 30.04.2017) und auch um eine Anlagennummer (Beispiel: "4101") für Dank begrenzen muss jede Hilfe wird sehr geschätzt. Public Function InventoryXport_4100()Wie kann ich Parametercode hinzufügen, um eine Abfrage von Zugriff 2013 zu Excel 2013 zu exportieren

Dim appXL As Object 
Dim wb As Object 
Dim wks As Object 
Dim xlf As String 
Dim rs As DAO.Recordset 
Dim fld As Field 
Dim intColCount As Integer 

xlf = "Z:\COST ACCOUNTING INFO\Inventory Reports\MyFile.xlsx" 

Set rs = CurrentDb.OpenRecordset("(QS)_Inventory") 
Set appXL = CreateObject("Excel.Application") 
Set wb = appXL.Workbooks.Open(xlf) 
Set wks = wb.Sheets("Inventory Xport") 'Sheet name 

If rs.EOF = True Then 
    MsgBox "No data", vbOKOnly 
Exit Function 
End If 

With appXL 
    .Application.worksheets("Inventory Xport").SELECT 
    .Application.columns("A:AQ").SELECT 
    .Application.columns.Clear 
End With 

intColCount = 1 

For Each fld In rs.Fields 
    wks.Cells(1, intColCount).Value = fld.Name 
    intColCount = intColCount + 1 
Next fld 

appXL.displayalerts = False 

wks.Range("A2").CopyFromRecordset rs 

appXL.Visible = True 

With appXL 
    .Application.worksheets("Inventory Xport").SELECT 
    .Application.columns("A:AQ").SELECT 
    .Application.columns.AutoFit 
    .Application.Range("A2").SELECT 
    .Application.ActiveWindow.FreezePanes = True 
End With 

wb.Save 
wb.Close 
appXL.Quit 

Set wb = Nothing 
rs.Close 
Set rs = Nothing 

End Function 
+0

Ich weiß nicht, ob der Parameter auf OpenRecordset eine Tabelle oder Abfrage ist? Wie auch immer, es gibt eine Möglichkeit, eine "Parameterabfrage" zu machen, um den Benutzer aufzufordern, nach Dingen wie einem Datum (oder Datumsbereich) und der Anlagennummer zu filtern. Ich habe seit langer Zeit keine davon mehr gemacht, also bin ich ein bisschen eingerostet, aber sieh dir das an: https://support.office.com/en-us/article/Use-a-parameter-to-make -a-query-ask-for-input-bf1d0f69-31ed-4ce7-8b74-f5b759317718 –

+0

Mögliches Duplikat von [Hinzufügen eines Parameters zu einem vorhandenen Code zum Exportieren einer Access Query nach Excel] (http://stackoverflow.com/questions/44048628/adding-parameter-zu-existierendem-code-zu-export-eine-zu-ausgangs-abfrage-zu-excel – wazz

Antwort

1

Sie verwenden können:

Dim Date1 As Date 
Dim Date2 As Date 
Dim PlantNr As String 
Dim Sql As String 

Date1 = #1/31/2017# 
Date2 = #4/30/2017# 
PlantNr = "4101" 
Sql = "Select * From [(QS)_Inventory] Where YourDateField Between #" & Format(Date1, "yyyy\/mm\/dd") & "# And #" & Format(Date2, "yyyy\/mm\/dd") & "# And [Plant Number] = '" & PlantNr & "'" 

Set rs = CurrentDb.OpenRecordset(Sql)