none
TransferSpreadsheet funktioniert nicht.

    Frage

  • Hallo zusammen

    Ich brauche Eure Hilfe, da ich nicht mehr weiter komme. Ich möchte Daten aus der DB in ein Excel-Sheet exportieren. Das mache ich mit untenstehendem Code:

    Sub test()
    'Supercode
    
    950 db.CreateQueryDef strNameTempQuery, strSQL
    970 db.QueryDefs.Refresh
    980 DoEvents
    
    990 MsgBox "Blablabla.", vbInformation + vbOKOnly, "Supertitel"
    Dim qrf As QueryDef
    For Each qrf In db.QueryDefs
    Debug.Print qrf.Name
    Next
        ' Daten exportieren
    1000 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strNameTempQuery, strFileName
    
    'Weiterer Supercode
    End Sub
    

    Zwischen den Zeilen 950 und 1000 steht kein weiterer Code. Die Variablen strNameTempQuery, strSQL und strFileName sind immer mit dem richtigen Wert gefüllt.

    Jetzt habe ich eine Prozedur, welche diese 'Test'-Prozedur aufruft und mir die Daten wie gewünscht in ein Excel-Sheet abfüllt.

    Das Problem ist, dass ich eine andere Prozedur habe, welche diese 'Test'-Prozedur ebenfalls aufruft, einzelne Codezeilen zu beginn nicht aufruft, mir dann aber bei TransferSpreadsheet diesen Fehler bringt:

    ? err.Number
    3011
    ? err.Description
    The Microsoft Access database engine could not find the object 'TempExport'. Make sure the object exists and that you spell its name and the path name correctly. If 'TempExport' is not a local object, check your network connection or contact the server administrator.

    Ich frage ja gleich vor der Ausführung den Namen aller Queries ab und dort ist die 'TempExport' vorhanden! Also von der einen Prozedur aufgerufen funktioniert alles (auch mehrfach, hatte nie probleme), von der anderen Aufgerufen funktioniert es nicht, obwohl alle Parameter den richtigen Wert haben und die Abfrage existiert.

    Decompile und alles in neue DB importiert hat keine Verbesserung gebracht.

    Kann mir jemand hier weiterhelfen?


    Danke und Gruss Thomas

    Mittwoch, 21. Mai 2014 15:44

Alle Antworten

  • Hallo

    Tja, manchmal funktioniert mein Code, manchmal nicht. Ich weiss zwar nicht wieso, aber ist nicht so wichtig.


    Danke und Gruss Thomas

    • Als Antwort markiert Alphawolfi Samstag, 24. Mai 2014 09:26
    • Tag als Antwort aufgehoben Alphawolfi Montag, 26. Mai 2014 07:53
    Samstag, 24. Mai 2014 09:26
  • Am 21.05.2014 schrieb Alphawolfi:

    Zwischen den Zeilen 950 und 1000 steht kein weiterer Code. Die Variablen strNameTempQuery, strSQL und strFileName sind immer mit dem richtigen Wert gefüllt.

    Ich mach das so ähnlich, funktioniert einwandfrei:

    Dim qryExcelFile As DAO.QueryDef
    Dim rs As DAO.Recordset, rsSQL As String
    Dim strQuery As String
    strQuery = GetOption("AbfragenameExcelExport")
    Set dbsAlwaysOpen = DBEngine(0)(0)
    Dim qdf As DAO.QueryDef
    
    'Falls die Abfrage mit dem Namen "qryExcelFile" schon vorhanden ist,
    'vorher löschen.
    For Each qdf In dbsAlwaysOpen.QueryDefs
            If qdf.Name = strQuery Then
                    CurrentDb.QueryDefs.Delete strQuery
                    Exit For
            End If
    Next qdf
    
    Call Pause(3)
    
    dbsAlwaysOpen.QueryDefs.Refresh
    
    Set qryExcelFile = dbsAlwaysOpen.CreateQueryDef(strQuery, strSQL)
    Call Pause(3)
    
    dbsAlwaysOpen.QueryDefs.Refresh
    
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, strQuery, strPfad, True

    Und hier noch die Pause() Funktion:

    Public Function Pause(Pausenlänge As Long)
    On Error GoTo err_Pause:
    Dim Start, Ende As Long
    
            Pausenlänge = Pausenlänge        ' Dauer festlegen.
            Start = Timer        ' Anfangszeit setzen.
            Do While Timer < Start + Pausenlänge
                    DoEvents        ' Steuerung an andere Prozesse abgeben.
            Loop
            Ende = Timer        ' Ende festlegen.
    
    exit_Pause:
         Exit Function
    
    err_Pause:
            MsgBox "Fehler: " & Err.Number & " " & Err.description
            Resume exit_Pause
    End Function

    Wie Du siehst hatte ich mit so ähnlichen 'Blinkerfunktionen' zu tun.
    Seitdem die Pausen eingebaut sind, läuft alles sehr zuverlässig.


    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Samstag, 24. Mai 2014 11:38