Thema Datum  Von Nutzer Rating
Antwort
27.04.2017 17:42:52 Dennis
NotSolved
27.04.2017 18:17:36 BigBen
NotSolved
28.04.2017 07:18:11 Dennis
NotSolved
28.04.2017 07:29:42 Dennis
NotSolved
Rot Tabellenblätter als einzelne PDFs speichern
28.04.2017 08:39:06 BigBen
NotSolved
28.04.2017 09:21:02 Dennis
NotSolved
28.04.2017 09:27:05 Dennis
NotSolved
28.04.2017 12:06:42 BigBen
NotSolved
28.04.2017 12:14:37 BigBen
NotSolved
02.05.2017 10:03:00 Dennis
NotSolved
02.05.2017 16:46:54 BigBen
NotSolved
02.05.2017 16:57:41 BigBen
NotSolved
03.05.2017 09:19:03 Dennis
NotSolved
03.05.2017 12:48:41 Dennis
NotSolved
03.05.2017 13:18:39 BigBen
NotSolved
03.05.2017 13:59:43 Dennis
NotSolved
03.05.2017 19:17:54 BigBen
NotSolved
04.05.2017 09:14:05 Dennis
NotSolved
04.05.2017 15:50:09 BigBen
NotSolved
05.05.2017 09:22:29 Dennis
NotSolved
05.05.2017 09:26:22 Dennis
NotSolved
05.05.2017 09:34:54 Dennis
NotSolved
05.05.2017 12:45:25 BigBen
NotSolved
08.05.2017 07:21:46 Dennis
NotSolved
08.05.2017 18:07:54 BigBen
NotSolved

Ansicht des Beitrags:
Von:
BigBen
Datum:
28.04.2017 08:39:06
Views:
640
Rating: Antwort:
  Ja
Thema:
Tabellenblätter als einzelne PDFs speichern

Hallo,

wenn Excel nach dem Speichern von drei Tabellen nicht mehr reagiert, liegt es daran, dass der Befehl an sich für die Speicherung zu lange braucht.

Windows erwartet von einer Anwendung, dass es uf Anfragen in einem bestimmten Zeitfenster reagiert. Damit sollen "nicht reagierende Anwendungen" optisch für den Anwender markiert werden. Zusätzlich wird dem Anwender schließlich die Möglichkeit gegeben, eine scheinbar nicht mehr reagierende Anwendung zu beenden. Windows macht hier keinen Unterschied, ob die Anwendung eine aufwendige Berechnung durchführt oder nicht.

Wenn der Befehl "Einzelne_Tabellen" länger als normal benötigt, um vollständig ausgeführt zu werden, passieren solche Ausnahmesituationen, wie bereits beschrieben.

Es gibt mehrere Möglichkeiten, um das zu beheben:

Sub Einzelne_Tabellen()
  Dim oWs As Worksheet
  On Error Resume Next
  For Each oWs In ActiveWorkbook.Worksheets
    oWs.Copy
    With ActiveWorkbook
      ' .SaveAs oWs.Name
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            oWs.Name & ".PDF", Quality:=xlQualityStandard, IncludeDocProperties _
            :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
      VBA.DoEvents
      .Close False
    End With
  Next oWs
End Sub

Der Befehl VBA.DoEvents bewirkt nichts anderes, als eine Abarbeitung aller zwischenzeitlich aufgelaufenen Anfragen.

Wichtiger Hinweis: Falls der Anwender zwischenzeitlich nochmals den Speicherungs-Vorgang anstößt, wird dieser auch mehrfach ausgeführt! Um eine mehrfache Ausführung zu verhindern kann man auch folgenden Code einsetzen:

Sub Einzelne_Tabellen()
  Static doSave As Boolean
  Dim oWs As Worksheet
  On Error Resume Next
  If Not doSave Then
    doSave = True
    For Each oWs In ActiveWorkbook.Worksheets
      oWs.Copy
      With ActiveWorkbook
        ' .SaveAs oWs.Name
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
              oWs.Name & ".PDF", Quality:=xlQualityStandard, IncludeDocProperties _
              :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        VBA.DoEvents
        .Close False
      End With
    Next oWs
    doSave = False
  Else
    MsgBox "Die Seicherung wird bereits ausgeführt! Bitte etwas Geduld...", vbInformation
  End If
End Sub

Die Statische Variable doSave behält seinen Wert auch nach BEendigung des Befehls bei. Daher wird die Varable vor Beginn der Speicherng auf True gesetzt und nach Abschluß wieder auf False zurückgesetzt. Falls der Befehl mehrfach aufgerufen wird, bekommt der Anwender eine Info-Nachricht.

Falls das nichts bringen sollte, kann man auch den ganzen Speicherungs-Vorgang im Hintergrund ausführen lassen:

Mit OnTime kann ein beliebiges Makro auch im Hintergrund ausgeführt werden:

Sub Einzelne_Tabellen(Optional runningDirekt As Boolean = True)
    Static doSave As Boolean
    Dim oWs As Worksheet
    On Error Resume Next
    If runningDirekt Then
        Application.OnTime Now() + TimeValue("00:00:01"), "'Einzelne_Tabellen (False)'"
    Else
        If Not doSave Then
            doSave = True
            For Each oWs In ActiveWorkbook.Worksheets
                oWs.Copy
                With ActiveWorkbook
                    ' .SaveAs oWs.Name
                    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                        oWs.Name & ".PDF", Quality:=xlQualityStandard, IncludeDocProperties _
                        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
                    VBA.DoEvents
                    .Close False
                End With
            Next oWs
            doSave = False
        Else
            MsgBox "Die Seicherung wird bereits ausgeführt! Bitte etwas Geduld...", vbInformation
        End If
    End If
End Sub

Kurze Erläuterung: Wenn der Befehl Ohne Parameter aufgerufen wird, so wird dieser nach 1 Sekunde nochmals mit einem Parameter im Hintergrund gestartet. Erst beim zweiten Aufruf (mit Parameter) wird die Sicherung der Tabellenblätter durchgeführt.

Vorteil: Excel kann während der Speicherung normal auf Anfragen reagieren, es tritt keine Meldung "Anwendung reagiert nicht mehr" auf.

Nachteil: Der Anwender kann beim Speichern einer Tabelle weiterhin Änderungen vornehmen. Die Folgen kann ich nicht abschätzen.

Vielleicht hilft eine dieser Lösungsvorschläge weiter.

LG, BigBen


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
27.04.2017 17:42:52 Dennis
NotSolved
27.04.2017 18:17:36 BigBen
NotSolved
28.04.2017 07:18:11 Dennis
NotSolved
28.04.2017 07:29:42 Dennis
NotSolved
Rot Tabellenblätter als einzelne PDFs speichern
28.04.2017 08:39:06 BigBen
NotSolved
28.04.2017 09:21:02 Dennis
NotSolved
28.04.2017 09:27:05 Dennis
NotSolved
28.04.2017 12:06:42 BigBen
NotSolved
28.04.2017 12:14:37 BigBen
NotSolved
02.05.2017 10:03:00 Dennis
NotSolved
02.05.2017 16:46:54 BigBen
NotSolved
02.05.2017 16:57:41 BigBen
NotSolved
03.05.2017 09:19:03 Dennis
NotSolved
03.05.2017 12:48:41 Dennis
NotSolved
03.05.2017 13:18:39 BigBen
NotSolved
03.05.2017 13:59:43 Dennis
NotSolved
03.05.2017 19:17:54 BigBen
NotSolved
04.05.2017 09:14:05 Dennis
NotSolved
04.05.2017 15:50:09 BigBen
NotSolved
05.05.2017 09:22:29 Dennis
NotSolved
05.05.2017 09:26:22 Dennis
NotSolved
05.05.2017 09:34:54 Dennis
NotSolved
05.05.2017 12:45:25 BigBen
NotSolved
08.05.2017 07:21:46 Dennis
NotSolved
08.05.2017 18:07:54 BigBen
NotSolved