Application.Quit

Liebe/-r Experte/-in,

Ich nutze Access 2007 und habe ein Problem in der Kommunikation mit Excel über VBA

Set xlApp = New Excel.Application
xlApp.Visible = False

Set xlBook = xlApp.Workbooks.Add(xltemplate)
Set xlSheet = xlApp.ActiveSheet
Set xlRange = xlSheet.Range(„A6“)

xlRange.CopyFromRecordset rs

xlSheet.Name = TTNR

xlSheet.Columns(„I:L“).NumberFormat = „h:mm;@“

xlSheet.Range(„I3“).NumberFormat = „dd/mm/yy;@“
xlSheet.Range(„K3“).NumberFormat = „dd/mm/yy;@“

xlSheet.Range(„N4:Q4“).Copy
xlSheet.Range(„N6:Q2000“).PasteSpecial
xlSheet.Range(„A4“).Select

i = xlRange.End(xlDown).Offset(3, 0).Row

xlSheet.Range(„B“ & i).Value = „Summe:“
xlSheet.Range(„H“ & i).FormulaLocal = „=Teilergebnis(9;H6:H“ & (i - 3) & „)“
xlSheet.Range(„K“ & i).FormulaLocal = „=Teilergebnis(9;K6:K“ & (i - 3) & „)“
xlSheet.Range(„K“ & i).NumberFormat = „[hh]:mm“
xlSheet.Range(„L“ & i).FormulaLocal = „=Teilergebnis(9;L6:L“ & (i - 3) & „)“
xlSheet.Range(„L“ & i).NumberFormat = „[hh]:mm“
xlSheet.Range(„M“ & i).FormulaLocal = „=Teilergebnis(9;M6:M“ & (i - 3) & „)“
xlSheet.Range(„N“ & i).FormulaLocal = „=Teilergebnis(9;N6:N“ & (i - 3) & „)“
xlSheet.Range(„O“ & i).FormulaLocal = „=Teilergebnis(9;O6:open_mouth:“ & (i - 3) & „)“
xlSheet.Range(„P“ & i).FormulaLocal = „=Teilergebnis(9:stuck_out_tongue_winking_eye:6:stuck_out_tongue:“ & (i - 3) & „)“
xlSheet.Range(„Q“ & i).FormulaLocal = „=Teilergebnis(9;Q6:Q“ & (i - 3) & „)“
xlSheet.Range(„R“ & i).FormulaLocal = „=Teilergebnis(9;R6:R“ & (i - 3) & „)“
xlSheet.Range(„Y“ & i).Value = „“
xlSheet.Range(„A“ & (i - 2) & „:Z“ & (i - 2)).Value = „“
xlSheet.Range(„A“ & (i + 1) & „:Z2000“).Value = „“
xlSheet.Range(„A5:T“ & (i - 3)).AutoFilter

xlBook.SaveAs FileName:=„C:\Downloads\Test.xls“, FileFormat:=xlNormal, CreateBackup:=False

Set xlSheet = Nothing
Set xlBook = Nothing

xlApp.Quit
Set xlApp = Nothing

Dieser Code funktioniert zwar aber Excel bleibt trotzdem als Prozess im Taskmanager bestehen und blockiert den weiteren Ablauf.
Wenn ich das SaveAs Statement entferne und es über das Dialogfenster von Excel mache verschwindet Excel anschließend.

Gibt es dafür eine Erklärung?

Vielen Dank

MfG
M.Bergbold

//**************************************************
//**
Hallo Marco!

Das FileFormat:=xlNormal gibt es für Excel 2007 nicht mehr.
Für XLSM-Dateien lautet es: FileFormat:=xlOpenXMLWorkbookMacroEnabled

z.B.:
ActiveWorkbook.SaveAs „C:\ron.xlsm“, fileformat:=52
’ 52 = xlOpenXMLWorkbookMacroEnabled = xlsm

51 = xlOpenXMLWorkbook (.xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (.xlsm)
50 = xlExcel12 (.xlsb)
56 = xlExcel8 (97-2003 Format in Excel 2007, .xls)

----> Du solltest in Deinem Bsp. 56 nehmen.

Gruß Ersin.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marco,

tut mir leid, kann da leider nicht helfen.
Da müsste ich mich auch erst reinfuchsen.

Hoffe du findest die passende Lösung

Thomas

Hallo Ersin,

Danke für den Tip, aber das hatte ich schon probiert. Das ändert nichts am Ablauf, außerdem will ich die Datei ja als „Normale XLS“ speichern damit Excel 2003 Benutzer auch in den Genuss des Lesens kommen.

Aber ich habe des Rätsels Lösung gefunden. Es liegt an der nicht zurückgesetzten RangeVariablen

Diese Änderung hats dann gebracht:

Set xlRange = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing

Trotzdem danke für die Hilfe.

Gruß
Marco

hallo Herr Bergbold,

so mache ich es -(in Acc2003)

ActiveWorkbook.Save


'Excel Schließen und Instanzen zerstören
ActiveWorkbook.Close
OExl.Quit
Set OExl = Nothing

  1. sichern
  2. Aktive Datei schließen
  3. Excel schließen
  4. Instanzen schließen

Den Namen weise ich vorher schon zu:
sWsName = „C:\msg_Vers1“ & „Meine Datei_“ & Date & „_“ & Me.txtAusgPro & „.xls“
sTabName = „tblBestNrArchiv_Alle“

DoCmd.Hourglass True
DoCmd.TransferSpreadsheet acExport, 8, sTabName, sWsName, False, „“
DoCmd.Hourglass False

Ich hoffe ich konnte helfen - leider habe ich zur Zeit auf keinem Rechner die 2007 installiert - ich konnte also den Code nicht testen.

mfg

Jürgen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Sorry,
ich hätte es genau so gemacht,
leider kann ich da nicht weiterhelfen!

AO

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]