[VBA] Excel-Prozess bleibt dauerhaft aktiv obwohl

Bild

Betrifft: [VBA] Excel-Prozess bleibt dauerhaft aktiv obwohl
von: Friedrich
Geschrieben am: 23.07.2015 12:20:45

Hallo,
habe folgenden VBA-Code mit dem eine Access-Datenbank in Excel exportiert wird. anschließend werden einige Formatierungen durchgeführt. Das funktioniert soweit alles, außer, dass der Excel-Prozess am Ende nicht ordnungsgemäß geschlossen wird.
(er ist weiterhin im Task-Manager sichtbar, verschwindet erst, sobald ich auch Access schließe)
Dadurch kann ich das Script nicht mehrfach ausführen, Fehlermeldung: Laufzeitfehler 1004: Die Methode "Rows" für das Objekt "_Global" ist fehlgeschlagen. (entsprechende Zeile im Code markiert)
Weißt jemand warum die Excel-Datei nicht ordnungsgemäß geschlossen wird? Habe ich evtl. eine Variable nicht richtig deklariert bzw falsch verwendet?
Viele Grüße,
Friedrich
Public Sub Select_in_Excel_anzeigen()

Dim sDatei As String

sDatei = "C:\Users\friedrich\Desktop\Export_Test2.xlsx"

If Dir(sDatei) <> "" Then
Kill sDatei
End If
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "vrt_master", "C:\Users\friedrich\Desktop\Export_Test2.xlsx", True, ""
Dim xlApp As Excel.Application
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\friedrich\Desktop\Export_Test2.xlsx")
Set xlSheet = xlBook.Worksheets(1)
With xlSheet
Dim LastColumn As Long
Dim LastRow As Long
LastColumn = .Cells.Find(What:="*", After:=.Range("A1"), _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Hier tritt der Laufzeitfehler auf (LastRow = ...)
Range(Cells(1, 1), Cells(LastRow, LastColumn)).Select
Range(Cells(1, 1), Cells(LastRow, LastColumn)).Activate
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(LastRow, LastColumn)), , xlYes).Name = _
"Tabelle1"
Range(Cells(1, 1), Cells(LastRow, LastColumn)).Select
ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleLight2"

Columns(LastColumn).Select
Selection.Offset(0, 1).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.EntireColumn.Hidden = True

With xlSheet.PageSetup
.LeftHeader = "Vertriebsreporting"
.CenterHeader = "&A"
.RightHeader = "&D"
.LeftFooter = "&P/&N"
.PrintArea = Range(Cells(1, 1), Cells(LastRow, 12)).Address
.Orientation = xlLandscape
End With

Rows(LastRow).Select
Selection.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
End With
xlBook.Save
xlApp.Application.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing

Bild

Betrifft: Punkt vergessen..
von: Raphael H
Geschrieben am: 23.07.2015 12:43:48
Hallo Friedrich,
du hast den Punkt vor Cells vergessen...
und das andere kann daran liegen, dass die Excel geschlossen wird bevor die Variablen geleert werden. Versuchs mal in der Reihenfolge


 Set xlApp = Nothing
 Set xlBook = Nothing
 Set xlSheet = Nothing
 xlBook.Save
 xlApp.Application.Quit
Gruess
Raphael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zählen wenn "Wort1" oder "Wort2" "