2016-04-21 7 views
0

Ich habe eine Suchmaschine auf einem Formular in MS Access erstellt. Das Formular verwendet eine ListBox ("List1"), um Ergebnisse basierend auf einer Schlüsselwortsuche anzuzeigen. Ich wollte eine Schaltfläche ("Command47") erstellen, die die Ergebnisse der Listbox in einer neuen Excel-Tabelle anzeigt. Ich möchte die Datei nicht in einem Dateipfad speichern, sondern nur, dass sie geöffnet wird. Unten ist, was ich derzeit habe:Erstellen einer neuen Excel-Tabelle aus einer dynamischen Listbox in einem MS Access-Formular

Private Sub Command47_Click() 

     Dim qdef As DAO.QueryDef 

     Set qdef = CurrentDb.CreateQueryDef("VFE") 

     qdef.SQL = Me.List1.RowSource 

     qdef.Close 

     Set qdef = Nothing 

     CurrentDb.QueryDefs.Delete "VFE" 

End Sub 

Müssen Sie wissen, wohin Sie von hier gehen.

Antwort

0

Was Sie im Grunde tun müssen, ist eine Excel-Instanz zu öffnen, ein Arbeitsmappenobjekt zu erstellen und es mit dem Re-Cord-Set aufzufüllen.

Damit dies funktioniert, werden Sie einen Verweis auf Microsoft ExcelVersionsObjektbibliothek

References window example

Private Sub Command47_Click() 
    Dim qd As DAO.QueryDef, rs As DAO.Recordset 
    Dim xl As Excel.Application, wbk As Excel.Workbook, wsh As Excel.Worksheet 
    Dim i As Long 
    Set qd = CurrentDb.CreateQueryDef("VFE") 
    qd.SQL = Me.List1.RowSource 
    Set rs = qd.OpenRecordset(dbOpenSnapshot) 

    Set xl = New Excel.Application 
    xl.visible = False 
    Set wbk = xl.Workbooks.Add(1) ' Creates a new workbook with 1 worksheet 
    Set wsh = wbk.Worksheets(1)  ' Selects the first worksheet 
    With wsh 
    .Name = left(qd.Name, 32) 
    .Range("A1").Value = qd.Name 
    For i = 1 To rs.Fields.Count ' Populates the 2nd row with field names 
     With .cells(2, i) 
     .Value = rs.Fields(i - 1).Name 
     .font.bold = True 
     End With 
    Next 
    .Range("A3").CopyFromRecordset rs 
    End With 
    xl.visible = True 
    qd.close 
    CurrentDB.QueryDefs.Delete("VFE") 
End Sub 

Ich hoffe, das hilft hinzufügen müssen!