Legacy Excel-Berichte

Arbeiten mit Legacy Excel-Berichten

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 02.01.2006
Updated: 03.06.2019 | Links erneuert.

Dieser Artikel behandelt die Office-generierten Legacy Excel-Berichte. Wir empfehlen, stattdessen die Office-Berichte (Word, Excel, PDF) zu verwenden, welche auch im Excel-Format ausgegeben werden können.

Legacy Excel-Berichte werden in Vertec wie die Legacy Word-Berichte als Legacy Office-Berichte registriert. Anhand der Datei-Endung wird festgestellt, ob Excel oder Word zum Ausführen des Berichts gestartet werden soll.

Anders als bei Legacy Word-Berichten gibt es für Legacy Excel-Berichte keinen Vertec-eigenen, eingebauten Berichtsgenerator. Ein Legacy Excel-Bericht muss ein speziell für den Bericht geschriebenes Makro namens DoReport2 enthalten. Dieses Makro wird beim Ausführen des Berichts aufgerufen und ist zuständig für das Einsetzen der Berichtdaten.

Die Syntax lautet wie folgt:

Function DoReport2(vertec as Object, rootObj as Object, optargObj as Object, wrkbook as Workbook) as Boolean

Dieses Makro erlaubt die Übergabe von Vertec und Argumentobjekten sowie des Workbooks. Damit funktioniert das Ausführen von Legacy Excel Reports auch korrekt, wenn mehrere Vertec Instanzen laufen oder zwischen verschiedenen Workbooks umgeschaltet wird.

Argumente

vertec

Zugriff auf das Vertec, von dem aus der Report gestartet wurde.

rootObj

Das Objekt, auf welchem der Legacy Excel-Report ausgeführt wird. Diese Variable wird verwendet anstelle von Vertec.argobject und funktioniert bei Legacy Excel-Reports auch bei Ausführung via Rechtsklick.

optargObj

Die optionale Adresse, welche beim Drucken-Dialog temporär angegeben werden kann. Die Expression optargObj.adresstext zum Beispiel liefert in dem Fall die gewünschte Druckadresse.

wrkbook

Das Excel Woorkbook, in das geschrieben wird.

Der Rückgabewert der Funktion muss auf True gesetzt werden, sonst wird das Excel Dokument nicht angezeigt.

Function DoReport2(vertec as Object, rootObj as Object, optargObj as Object, wrkbook as Workbook) as Boolean
DoReport2 = True

End Function

Lang laufende Legacy Excel-Reports

Bei lange laufenden Legacy Excel-Reports kann es nach einer gewissen Zeit zu folgender Meldung kommen:

Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung

Das lässt sich beheben, indem im Code am Anfang:

Application.DisplayAlerts = False

eingefügt wird.

Wichtig ist, dass das am Ende der Funktion wieder ausgeschaltet wird:

Application.DisplayAlerts = True

OCL in Kommentarfeldern evaluieren

Auch in einem Legacy Excel-Report können - wie in Legacy Word-Berichten - OCL-Expressions in Kommentarfeldern evaluiert werden. Hier muss das allerdings von Hand geschehen.

In den Zellen, in denen etwas berechnet werden soll, muss ein Kommentar hinzugefügt und mit der OCL-Expression versehen werden. Der Autor, der von Excel automatisch gesetzt wird, muss von Hand entfernt werden. Das ist wichtig, denn der folgende Code kann nur mit reinem OCL umgehen.

Ein Kommentar sieht dann beispielsweise so aus:

Im folgenden Beispiel ist der Code direkt in die Funktion DoReport2 eingebaut:

Function DoReport2(vertec As Object, rootObj As Object, optargObj As Object, wrkbook As Workbook) As Boolean

'---"Generischer" Excel-Report Generator, evaluiert Kommentare und füllt einzelne Zellen.
Dim Sheet As Worksheet
Dim Comment As Comment
Dim OCL As String

Set Sheet = wrkbook.ActiveSheet

'---Fahre durch alle Kommentare durch und evaluiere das OCL.
'   ACHTUNG: die Kommentar müssen OHNE Autor sein, nur reines OCL.
On Error Resume Next
For Each Comment In Sheet.Comments
  Comment.Parent.Value = rootObj.eval(Comment.Text)
  Comment.Delete
  If Err <> 0 Then
    MsgBox Err.Description
    Err = 0
  End If
Next

DoReport2 = True

End Function
Bitte wählen Sie Ihren Standort