Query wegschrijven naar Excel bestand

Status
Niet open voor verdere reacties.

Friend

Verenigingslid
Lid geworden
31 jan 2009
Berichten
1.128
Beste forummers,

Schrijf nu de gegevens vanuit een query naar een Exel bestand met de volgende code:

Code:
Private Sub Knop217_Click()

Dim tFile As String
Dim Antwoord As Variant
Dim xlApp As Object, wkBK As Object


tFile = " c:/excel/2023/gegevensoverzicht.xlsm "
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "gegevensoverzicht", tFile, True, "naw"
        Set xlApp = CreateObject("Excel.Application")


    Antwoord = MsgBox("Wil je het excel bestand nu openen?", vbQuestion + vbYesNo, "Bestand openen")
    If Antwoord = vbYes Then
'        tFile = "c:/excel/2023/gegevensoverzicht.xlsm"
        
        With xlApp
            .Visible = True
            Set wkBK = .Workbooks.Open(tFile)
        End With
    Else
        MsgBox "Oke dan doen we dit niet"
    End If
End Sub

Dit gaat op zich prima echter ik zou graag de gegevens vanuit de acces query vanaf rij 2 overzetten (dus niet de kopteksten)
en zou pas het excel bestand willen invullen vanaf rij 6.

Is dit mogelijk?

Friend
 
Laatst bewerkt:
Nog afgezien van het feit dat je code een stukje korter kan: het is niet mogelijk om een export te maken zonder headers, ook al is daar een parameter voor. Wat op zichzelf dus vreemd is.

Code:
HasFieldNames
OptionalVariantUse True (1) to use the first row of the spreadsheet as field names when importing or linking. Use False(0) to treat the first row of the spreadsheet as normal data. If you leave this argument blank, the default (False) is assumed. When you export Access table or select query data to a spreadsheet, the field names are inserted into the first row of the spreadsheet no matter what you enter for this argument.
Wat het andere deel van je vraag betreft: a) waarom zou je dat willen? En b) waarom regel je dat niet in Excel zelf? Desnoods met een macro? Kun je gelijk de eerste rij met headers met code verwijderen.
 
Octafish, hartelijk dank voor je reactie.
Ja het in excel regelen met een macro zou ik normaal doen.
In dit geval is het een layout sheet van derden wat op de eerste 6 regels al data heeft staan.
Als het dus zonder macro had gekund was dit ideaal geweest.
Maar ok dan er in excel maar omheen werken met een extra handeling

Dank je.

Trouwens wel benieuwd naar jouw kortere code

Friend
 
Vooral netter:
Code:
[COLOR=#333333]Private Sub Knop217_Click()[/COLOR][COLOR=#333333]
Dim tFile As String
Dim xlApp As Object, wkBK As Object

    tFile = " c:/excel/2023/gegevensoverzicht.xlsm "
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "gegevensoverzicht", tFile, True, "naw"
    Set xlApp = CreateObject("Excel.Application")
    If MsgBox("Wil je het excel bestand nu openen?", vbQuestion + vbYesNo, "Bestand openen") = vbYes Then
        With xlApp
            .Visible = True
            Set wkBK = .Workbooks.Open(tFile)
        End With
    End If
End Sub[/COLOR]

 
Dank je wel Octafish!

Ziet er inderdaad beter uit!

Friend
 
Ik kijk nog even naar een manier om alsnog op een specifieke rij te importeren. Maar dat geeft gelijk aan hoe je het zou moeten doen: via importeren. Zodra je een Excel bestand opent, en dat doe je nu, krijg je automatisch het gegevensblad gevuld vanaf A1. Wat uiteraard niet meer dan logisch is, want daar begint je bestand nu eenmaal altijd mee als je een export maakt. Dat kun je nu eenmaal niet veranderen. Dat importeren zou je dan bijvoorbeeld kunnen doen doen door de export naar csv te doen, en niet naar een Excel bestand. Al denk ik dat dat wel zou moeten kunnen. Maar dat zoek ik nog wel even uit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan