Access 2010 - (VBA) Recordsets opslaan in excel file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Morrey
  • Registratie: November 2005
  • Laatst online: 01-07 19:22
Beste mensen,

Een vraagje over het volgende. Ik ben een database aan het bouwen voor de studievereniging, waarin voornamelijk studenten worden gekoppeld aan de verschillende commissies die er zijn.

Wat ik nu gemaakt heb, is een functie waarbij de gegevens van commissieleden van een of meer specifieke jaren naar excel ge-exporteerd worden. Dit doe ik nu, door alle velden vanuit de studenten tabel te kopieren naar een dump tabel, die ik dan via docmd.outputto naar excel exporteer.

Dit werkt, alhoewel ik liever had gezien dat ik direct een recordset naar excel zou kunnen wegschrijven. Ik heb lang gezocht maar niets kunnen vinden.

Nu heb ik de vraag gekregen of ik ook een optie zou kunnen toevoegen, waarin slechts een deel van alle velden ge-exporteerd wordt. Bijvoorbeeld alleen de naam plus adresgegevens of naam + telefoonnr. Dus volgens mij kan ik niet met het truukje met mijn dump tabel toepassen, waarna ik de handige functie outputto kan gebruiken. Ik zou dus graag een ado recordset direct naar excel exporteren, zonder dat ik allerlei vaste parameters in hoef te stellen (zoals bijvoorbeeld de locatie van het bestand, dit mogen ze zelf bepalen)

Wat voor suggesties hebben jullie? Alvast bedankt.

PS. Dit is de code die ik tot nu toe heb, misschien hebben jullie wat ook wat tips & tricks, ik ben tenslotte maar een student technische bedrijfskunde en geen informatica ;-).

Visual Basic: database.accdb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Private Sub Command189_Click()

Dim mySQL As String
Dim strJaargang As String
Dim strAfgestudeerd As String
Dim bolRun As Boolean
Dim valSelect As Variant

mySQL = "INSERT INTO Temp ( Idnr, [---- een hoop velden ----], [Eerste jaar bij TU/e] )"
mySQL = mySQL & " SELECT DISTINCT Studenten.Idnr,  [---- een hoop velden ----],  Studenten.[Eerste jaar bij TU/e]"
mySQL = mySQL & " FROM Studenten LEFT JOIN Commissieleden ON Studenten.Idnr = Commissieleden.StudentID"

If select_studenten.Value = "Alle studenten" Then
    If afgestudeerd.Value = 1 Then
        strAfgestudeerd = "((Studenten.[Examendatum afsluitend diploma]) Is Null)"
        mySQL = mySQL & " WHERE (" & strAfgestudeerd & ")"
    End If
    bolRun = True
    
Else
    If Jaargang.ItemsSelected.Count > 0 Then
    
        For Each valSelect In Me.Jaargang.ItemsSelected
            strJaargang = strJaargang & "((Commissieleden.Jaargang)='" & Me.Jaargang.ItemData(valSelect) & "') Or "
        Next valSelect
        strJaargang = Left(strJaargang, Len(strJaargang) - 4)
    
        If afgestudeerd.Value = 1 Then
            strAfgestudeerd = "((Studenten.[Examendatum afsluitend diploma]) Is Null) AND "
            
            mySQL = mySQL & " WHERE (" & strAfgestudeerd & "( " & strJaargang & "))"
        
        Else
            mySQL = mySQL & " WHERE ( " & strJaargang & " )"
        End If
        bolRun = True
    Else
        MsgBox "Selecteer ten minste 1 jaargang"
        bolRun = False
    End If
End If

If bolRun = True Then

    
    DoCmd.SetWarnings False
    DoCmd.RunSQL "delete * from Temp"
    DoCmd.RunSQL mySQL
    DoCmd.SetWarnings True
    DoCmd.OutputTo acOutputTable, "Temp", acFormatXLSX, , True, , , acExportQualityScreen
End If


End Sub

Acties:
  • 0 Henk 'm!

  • Morrey
  • Registratie: November 2005
  • Laatst online: 01-07 19:22
Mensen, ik heb mijn antwoord gevonden:

How to transfer data from an ADO Recordset to Excel with automation

Initieel schrikken al die objecten een beetje af, maar nadat ik alle onnodige regels code verwijderd heb, werkt t prima!

Thnx