Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

"Objektvariable oder With-Blockvariable nicht festgelegt"

Begonnen von Katastrophenkommando, März 21, 2022, 21:42:33

⏪ vorheriges - nächstes ⏩

Katastrophenkommando

Hello again ;D

ich habe folgenden Code:


Public Sub Auswertung()

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Auswertung_qry", _
    "C:\...\Berichte\Vorlagen\Auswertung.xlsx"
       
    Dim xlsApp As Excel.Application
    Dim xlsWb As Excel.Workbook
    Set xlsApp = CreateObject("Excel.Application")

    xlsApp.Visible = False   
    Set xlsWb = xlsApp.Workbooks.Open("C:\...\Berichte\Vorlagen\Auswertung.xlsx")   
    ActiveWorkbook.SaveAs FileName:= _
    "C:\...\Temp\" & "Auswertung" & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, Password:="ABCDEFG", CreateBackup:=False
    xlsApp.Workbooks("Auswertung.xlsx").Close SaveChanges:=False
    xlsApp.Quit
   
    Dim SourceFile, DestinationFile
    SourceFile = "C:\...\Temp\Auswertung.xlsx" ' Define source file name.
    DestinationFile = "C:\...\Berichte\" & Format(Now, "YYYY_MM_DD_HHMM") _
    & "_Auswertung" & ".xlsx"
    FileCopy SourceFile, DestinationFile
   
    Dim objOutlook As Object
    Dim objMail As Object
       
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)

        With objMail

        .SentOnBehalfOfName = "anyone@lugundtrug.de"
        .To = "someoneelse@knirzundknispel.de"
        .Subject = "Auswertung"
        .Body = "Trallalla"

        .Attachments.Add "C:\...\Temp\Auswertung.xlsx"
   
        .Display
                   
        End With
             
    On Error Resume Next
    Kill "C:\...\Temp\*.*"
   
End Sub

Grundsätzlich funktioniert der, allerdings nur einmal. Wenn ich ihn zweimal nacheinander ausführen möchte, bekomme ich diese Fehlermeldung:

"Objektvariable oder With-Blockvariable nicht festgelegt" in diesem Teil des Codes:

ActiveWorkbook.SaveAs FileName:= _
    "C:\...\Temp\" & "Auswertung" & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook, Password:="ABCDEFG", CreateBackup:=False

Der Code scheint mir Excel nicht ganz zu schließen, jedenfalls ist im Task Manager immer noch ein Excel-Hintergrund-Prozess offen. Wenn ich den manuell schließe, funktioniert auch der Code wieder.

Ich komme nicht drauf, was es ist - habt Ihr eine Idee, was ich falsch mache?

Und noch eine Anfänger-Bonusfrage:

Ich weise ja mehreren Variablen einen Objektverweis (hab ich das richtig gesagt?) zu (z.B. Set xlsApp = CreateObject("Excel.Application")). Ich habe mal gelesen, dass man das mit "Set ... = Nothing" rückgängig machen sollte (da war von "Aufräumen" die Rede). Ist das richtig, und wo müsste ich das einfügen? Ganz am Ende? Oder hängt genau das mit meinem Fehler zusammen?

Beste Grüße
Alex

DF6GL

Hallo,


hier

ActiveWorkbook.SaveAs FileName:= _

fehlt die Referenz auf das Excel-Objekt

xlsApp.ActiveWorkbook.SaveAs FileName:= _
Alle Objekte, die mit Set ... generiert wurden, sollten auch mit Set ... = Nothing wieder in passender Reihenfolge "zerstört" werden.


Katastrophenkommando

Hallo Franz,

allerbesten Dank mal wieder 8) . Sechs Buchstaben und einen Punkt später und der Code funktioniert. Und die Objekte hab ich gleich mit zerstört.

Viele Grüße