vielleicht kennt das ja schon jemand. Um Werte zur Laufzeit aus dem Dokument in eine Anwendungsbibliothek einzutragen, hab' ich mir folgende Funktion erstellt (wichtig ist hierbei nur die If-Abfrage):
Code: Alles auswählen
'dynamische Generierung einer zweiten Standardbibliothek auf Anwendungsebene, mit einem Modul, in das die aktuelle Systemzeit geschrieben wird
Dim sLibrary As String : sLibrary = "dynasoftBasics" 'Zuweisung der Standardbibliothek
Dim sDynamicText As String
'Zusammenstellung des Modultextes
sDynamicText = "Option Explicit" & cstCR &_
cstCR &_
"'Bemerkung: Dieses Modul wurde dynamisch zur Laufzeit erzeugt." & cstCR &_
cstCR &_
"Public Function libraryDateModified() As Date" & cstCR &_
" libraryDateModified() = " & Format(Now(), "YYYYMMDDHHMMSS") & cstCR &_
"End Function"
Dim sDynamicLibrary As String : sDynamicLibrary = sLibrary & "_dynV" 'Zuweisung eines Präfixes für die neue Bibliotheksbezeichnung
'Prüfung auf Existenz der Standardbibliothek in der Anwendungsebene
If GlobalScope.BasicLibraries.hasByName(sLibrary) Then
'Prüfung auf Existenz des dynamischen Bibliotheksbezeichners in der Anwendungsebene
If GlobalScope.BasicLibraries.hasByName(sDynamicLibrary) Then
'bei positivem Ergebnis werden die dazugehörigen Bibliotheken gelöscht
GlobalScope.BasicLibraries.removeLibrary(sDynamicLibrary)
GlobalScope.DialogLibraries.removeLibrary(sDynamicLibrary)
End If
'Erzeugung einer neuen Bibliothek mit dem angegebenen Bezeichner
GlobalScope.BasicLibraries.createLibrary(sDynamicLibrary)
GlobalScope.DialogLibraries.createLibrary(sDynamicLibrary)
'Erzeugung eines Moduls und Integration des aktualisierten Modultextes
GlobalScope.BasicLibraries.getByName(sDynamicLibrary).insertByName("content", sDynamicText)
End If
Mit folgendem Code habe ich jetzt einige Zeit herumgetestet, aber mir wird bei der Erzeugung eines Moduls in einer bestehenden Anwendungsbibliothek, jedesmal zusätzlich ein leeres Modul im Dokument erstellt, wenn der Modulname dort noch nicht vorhanden ist. Zudem bricht die Programmausführung auch immer wieder einmal direkt nach diesem Vorgang ab.
Code: Alles auswählen
If GlobalScope.BasicLibraries.hasByName("Test") Then
GlobalScope.BasicLibraries.loadLibrary("Test")
If GlobalScope.BasicLibraries.getByName("Test").hasByName("testMod") Then
GlobalScope.BasicLibraries.getByName("Test").removeByName("testMod")
GlobalScope.BasicLibraries.getByName("Test").insertByName("testMod", sDynamicText)
Else
GlobalScope.BasicLibraries.getByName("Test").insertByName("testMod", sDynamicText)
End If
Else
GlobalScope.BasicLibraries.createLibrary("Test")
GlobalScope.BasicLibraries.getByName("Test").insertByName("testMod", sDynamicText)
End If
Viele Grüße,
Marcel