|
Tach Allerseits,
folgendes Szenario: In einer Tabelle stehen Zeichenketten - u.U. mehrere Hundert. Pro Zeichenkette soll eine Tabelle erstellt und, da die Verarbeitung einer PlanMaker-Datei mit mehr als ca. 60 Tabellen zu lange dauert, dann jeweils in eine *.pmd-Datei geschrieben werden.
PlanMaker kann aber nur eine begrenzte Anzahl geöffneter Fenster verwalten, deshalb sollen diese erstellten Tabellen als Dateien gesichert und das zugehörige Fenster geschlossen werden - und jetzt beginnt das Problem.
Wird das zugehörige Script von PlanMaker aus gestartet, werden die Fenster der gesicherten Dateien NICHT geschlossen. PlanMaker stürzt nach einer Weile ab.
Wird das zugehörige Script aber von BasicMaker aus mit 'F9' gestartet, läuft alles ordnungsgemäß durch und nach ca. 30 Minuten sind alle - im aktuellen Fall - 218 Dateien erstellt und lediglich das Fenster der Start-PlanMaker-Datei ist noch geöffnet.
Die letztgenannte Vorgehensweise mag für Entwickler akzeptabel sein, nicht aber für Anwender, deshalb kommt diese Möglichkeit nicht in Betracht. Das Script soll aus der PlanMaker-Umgebung heraus mit 'Weiteres | Script starten...' gestartet werden können.
Ich arbeite mit >PlanMaker 2008 (rev 484) - Win XP SP2<, der Test-Umgebung >'start.pmd'(ist geöffnet), 'test1.pmd', 'test2.pmd', 'test3.pmd'< - lediglich vier leere *.pmd-Dateien, und dem Script >start.bas< - siehe unten.
-------------------------------------------------------------------------
Option Explicit Dim pm as Object
Sub Main Set pm = CreateObject("PlanMaker.Application") pm.Application.Visible = True pm.Application.Activate
pm.Application.Workbooks.Open "test1.pmd" pm.Application.Workbooks.Open "test2.pmd" pm.Application.Workbooks.Open "test3.pmd"
MsgBox pm.Application.Windows(1).Name MsgBox pm.Application.Windows(2).Name MsgBox pm.Application.Windows(3).Name MsgBox pm.Application.Windows(4).Name MsgBox pm.Application.Windows.Count
pm.Application.Windows(4).Close MsgBox pm.Application.Windows.Count
pm.Application.Windows(3).Close MsgBox pm.Application.Windows.Count
pm.Application.Windows(2).Close MsgBox pm.Application.Windows.Count
Set pm = Nothing End Sub
-------------------------------------------------------------------------
Was beachte ich nicht? Was mache ich falsch?
MfG fitti
|