Problem bei Excel

xaelze

Mitglied
Hallo,

wieder mal ein Problem.
Ich würde gerne eine Excel starten und dann mein Recordset dort hinein schreiben geht soweit eigentlich auch ganz gut nur das Problem ist jetzt wenn ich mein excel fenster komplett schließe und ich meine Funktion wieder, starte indem Excel aufgerufen wird, dann bringt er mir nen runtim error '91' : Object variable or with block variable not set

Code:
Set db = Application.CurrentDb()
    Set rec = db.OpenRecordset(GlobaleVariable.sql, dbOpenDynaset) 'Globalevariable ist ein Modul
    Set oExcel = New Excel.Application
    oExcel.Visible = True
    'oExcel.Interactive = False
    oExcel.Workbooks.Add

'HIER KOMMT DANN DIE FEHLERMELDUNG
    
    Set oExcelSheet = Excel.ActiveWorkbook.Sheets(1)
        
    With oExcelSheet
        .Name = "test1"
        .Range("A1", "m1").Font.Size = 20
        With Cells(1, 6)
            .Font.Underline = True
            .Font.Bold = True
        End With
        .Cells(1, 6) = "Recordset Table"
        .PageSetup.Orientation = xlLandscape
    End With
    
    rec.MoveLast
    For count = 1 To rec.RecordCount
        With oExcelSheet
            .Cells(2, count) = rec.Fields(count - 1).Name
            .Cells(3, count) = rec.Fields(count - 1).Value
        End With
    Next
    
    Set oExcelSheet = Nothing
    Set oExcel = Nothing
    
    rec.Close
    Set rec = Nothing
    db.Close
    Set db = Nothing

mein Gedanke ist, dass es irgend wie mit dem öffen, schließen oder offenen Referenzen meines Excels zu tun hat aber ich sehe irgend wie nicht welche

Danke schon mal gruß Alex
 
Hi!

Ich habe noch nicht ganz verstanden aus welcher Applikation herraus du das machts.
Aus VB oder aus Access?

Code:
und ich meine Funktion wieder starte indem Excel aufgerufen wird
Oder in Excel? :confused:

Was ist das?
"GlobaleVariable.sql"

Bitte noch mehr Informationen!

Viele Grüße,
Jacka
 
Also ich mache das ganze in Access. Ich benötige in 2 Formularen den gleichen String für mein Recordset. Im ersten suche ich mit meinem String und im zweiten Formular will durch den String dann meine Datensätze in eine Excel Tabelle schreiben. Darum habe ich ein Modul angelegt mit Namen 'GlobaleVariable' in der dann,
Code:
Global sql As String
definiert ist.
Im ersten Formular weise ich den String zu und dort wird auch das zweite Formular aufgerufen. Durch einen Klick auf einen Button in Formular 2 wird die oben genannte Funktion aufgerufen. Es startet ein Excel Fenster und schreibt alle meinen Daten wie gewünscht hinein. Schließe ich nun aber das Excel Fenster, öffne erneut mein zweites Formular und drücke den Button, um die genannte Funktion zu starten, kommt die oben beschriebene RunTime Fehlermeldung bei
Code:
Set oExcelSheet = Excel.ActiveWorkbook.Sheets(1)
Dazu ist noch zu sagen, wenn meine Funktion fertig ist, wird das zweite Formular mit
Code:
DoCmd.Close
geschlossen.
Oder würde es eine einfachere Methode geben um das zu lösen?

Danke Gruß Alex
 
Ha saugeil hab den Fehler gefunden. Einfach en WE dazwischen und man sieht gleich klarer. Typischer Anfängerfehler würde ich sagen.

man bemerke:

Code:
oExcel.Workbooks.Add
Set oExcelSheet = Excel.ActiveWorkbook.Sheets(1)

in

Code:
Set oExcelWorkbook = oExcel.Workbooks.Add
Set oExcelSheet = oExcel.ActiveWorkbook.Sheets(1)

Und es geht. Trotzdem danke für die Mühe

Gruß Alex
 
Zurück