Hallo,
ich möchte mittels Stapelbetrieb den Elementreport "LuftRaum" in den Geschossen 1-4 automatisch starten.
Leider funktioniert der Stapelbetrieb nur gelegendlich.. ich konnte leider noch keinerlei Hinweis darauf finden, warum das so passiert.
Wenn man den Elementreport seperat in den jeweiligen Geschossen startet funktioniert es.
Hier der VBA-Code für den Stapelbetrieb:
Sub Elementreport()Dim FF As IntegerDim pfad As String ' Pfad zur job.lst-DateiDim Pfad1 As String ' Pfad zum Speedikon-ProgrammverzeichnisDim pfad2 As String ' Pfad zur area.bat-DateiDim retval As DoubleFF = FreeFilepfad = Left(ActiveDesignFile.Path, InStr(ActiveDesignFile.Path, ".bpd") + 7) + "\bat\"' Es wird geprüft, ob das Verzeichnis "...bpd\bat" im Projektordner vorhanden ist - wenn nicht wird es erstellt.If Dir(pfad, vbDirectory) = "" Then MkDir (pfad)End Ifpfad = pfad + Environ$("Computername")' Es wird geprüft, ob das Verzeichnis "...bpd\bat\$COMPUTERNAME$" im Projektordner vorhanden ist - wenn nicht wird es erstellt.If Dir(pfad, vbDirectory) = "" Then MkDir (pfad)End Ifpfad = pfad + "\rpt"' Es wird geprüft, ob das Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" im Projektordner vorhanden ist - wenn nicht wird es erstellt.If Dir(pfad, vbDirectory) = "" Then MkDir (pfad)End Ifpfad = pfad + "\job.lst"' Es wird geprüft, ob die Datei "...bpd\bat\$COMPUTERNAME$\rpt\job.lst" im Projektordner vorhanden ist - wenn nicht wird es erstellt.If Dir(pfad, vbNormal) = "" Then Open pfad For Output As #FF Print #FF, "#" Print #FF, "# Job script for reporting elements" Print #FF, "# =================================" Print #FF, "#" Print #FF, "CMDNAME" Print #FF, "ReportElement" Print #FF, "#" Print #FF, "# Documents to process" Print #FF, "#" Print #FF, "CMDQUEUE" Print #FF, "floor 01:01" Print #FF, "floor 02:01" Print #FF, "floor 03:01" Print #FF, "floor 04:01" Print #FF, "#" Print #FF, "# Queue processing arguments" Print #FF, "#" Print #FF, "CMDARGS" Print #FF, "integer P_report_listing_output=1" Print #FF, "string P_report_listing_name=" + Chr(34) + "luftraum" + Chr(34) Print #FF, "string P_report_layout_name=" + Chr(34) + "luftraum" + Chr(34) Print #FF, "#" Print #FF, "# End of job script" Print #FF, "#" Close #FFEnd If' Pfad zum Speedikon-Programmverzeichnis wird als pfad1 gespeichert.Pfad1 = Left(ActiveWorkspace.ConfigurationVariableValue("MS_CONFIG"), InStrRev(ActiveWorkspace.ConfigurationVariableValue("MS_CONFIG"), "\") - 1)' Pfad zum Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" wird als pfad2 gespeichert.pfad2 = Left(pfad, Len(pfad) - 8)' Datei "area.bat" wird im Verzeichnis "...bpd\bat\$COMPUTERNAME$\rpt" angelegt (bzw. neu erstellt)Open pfad2 + "\rpt.bat" For Output As #FFPrint #FF, Environ$("Systemdrive")Print #FF, "cd " + Chr(34) + Pfad1 + Chr(34)Print #FF, "chcp 1252>nul"Print #FF, "rptbatch.bat " + Chr(34) + Left(ActiveDesignFile.Path, InStr(ActiveDesignFile.Path, ".bpd") + 3) + Chr(34)Close #FF'Shell wartet nicht, bis die Ausführung beendet ist...retval = ExecuteWait(pfad2 & "\rpt.bat", hidden:=True)End SubPublic Function ExecuteWait(ByVal pfad As String, Optional ByVal Argumente As String = "", Optional ByVal ArbeitsVerzeichnis As String, Optional ByVal FensterStil As Elkmenu.OMProcessWindowStyle = 1, Optional ByVal hidden As Boolean = True) As IntegerDim p As Elkmenu.ProcessSet p = New Elkmenu.Processp.CreateNoWindow = Not hiddenp.WorkingDirectory = ArbeitsVerzeichnisp.windowstyle = FensterStilp.FileName = pfadp.Arguments = Argumentep.StartWaitExecuteWait = p.ExitCodeEnd Function
Luftraum.mcr:# ******************************************************************************************************************************# * file: LuftRaum.mcr# * date: 12.10.2016# * translated and formated with # * Bentley Speedikon MacroTranslator # * Purpose: Erstellt fuer das Luftmengenprotokoll Datei mit Raumnr und Raumname2 # * User: Jaci# ******************************************************************************************************************************BESCHREIBUNG LuftRaum; UMGEBUNG report; VARIABLEN GANZZAHL EE, EENr, iRet2; DEZIMAL Vol1, Vol2, Umf; ZEICHEN Pfad, Gesch, Bauab, Vol, uUmfang; ENDE projektpfad(Pfad); Text_ersetzen(Pfad,'/','\'); Wenn RP_STOCKWERK > 9 DANN Format(2, GZ2); Text(2, Gesch, RP_STOCKWERK); Text(2, Bauab, RP_BAUABSCHNITT); SONST Format(3, GZ1); Text(3, Gesch, RP_STOCKWERK); Text(3, Bauab, RP_BAUABSCHNITT); ENDE OEFFAUSGAB (Pfad + '\ELK.project.data\Lueftung\' + gesch + '_' + Bauab + '_Luft_Raum.dat', 1); EE := Setze_Bauteil(RP_RAUM); WENN EE > 0 DANN FUER EENr := 1 SCHRITT EENr := EENr + 1 BIS EENr = EE; iRet2 := Bauteil_Info(EENr); WENN iRet2 = 0 DANN Vol1 := RP_RA_VOLUMEN; Vol1 := Vol1 / 1000000000; Format(4, DZ4.2); Text(4, Vol, Vol1); Ausgabe (1, RP_RA_NUMMER + '_' + RP_RA_NAME_2 + '_' + Vol); ENDE ENDE ENDE SCHLAUSGAB; ENDE
Ich hoffe jemand hat eine Idee, wo der Fehler begraben sein könnte?