Ich habe ein Makro, das mehrere und gelegentlich wechselnde Parameter verarbeitet.
Jetzt möchte ich eine Konfigurationsdatei in mein Makro einbinden, aus der ich die Parameter und ihre Werte einlese.
Ich habe da eine Datei wie die Enviroment-Datei vor Augen.
Dadurch möchte ich vermeiden, dass der Anwender in meinen eigentlichen Quelltext editieren zu muss, um neue Parameter zu verwenden.
Meine Frage lautet nun:
Wie kann ich es elegant realiseren, dass meinen Parametern im Makro die Werte aus der Konfigurationsdatei zugeordnet werden?
Die primitivste Lösung wäre, wenn ich ohne Abfrage die Parameter in einer vorgegebenen Reihenfolge in die Konfigurationsdatei schreibe. Dabei geht aber Flexibiltät verloren.
Und egal, ob ich eine Textdatei oder eine Excel-Tabelle verwenden, bleibt das Kernproblem, dass ich einen Variablenwert als String vorliegen habe, den ich einer Variablen zuweisen möchte, deren Name mir ebenfalls nur als String vorliegt.
Anbei zwei Lösungsansätze, denen es für meinen Geschmack an Eleganz, Einfachheit und Flexibiltät fehlt.
Inhalt Konfigurationsdatei.txt
Code:
Parameter1=Datei eins
Parameter2=Datei zwei
Parameter3="Datei drei"
Code:
Option ExplicitSub CATMain()
ZuordnungFesteReihenfolge
ZuordnungCaseAbfrage
End Sub
Sub ZuordnungFesteReihenfolge()
Dim ConfigFile As File
Dim sConfigFilePath As String
Dim oStreamIn As TextStream
Dim FileContent() As String
Dim Linecontent As String
Dim Parameter As String
Dim Parameter1 As String
Dim Parameter2 As String
Dim Parameter3 As String
Dim sParameterName As String
Dim i As Integer
sConfigFilePath = "C:\Temp\Konfigurationsdatei.txt"
Set ConfigFile = CATIA.FileSystem.GetFile(sConfigFilePath)
Set oStreamIn = ConfigFile.OpenAsTextStream ("ForReading")
i=-1
Do While Not (oStreamIn.AtEndOfStream)
i = i+1
Linecontent = oStreamIn.ReadLine
Linecontent = Split(Linecontent,"=")
Parameter = Linecontent(1)
ReDim Preserve FileContent(i)
FileContent(i) = Parameter
Loop
Parameter1 = FileContent(0)
Parameter2 = FileContent(1)
Parameter3 = FileContent(2)
MsgBox Parameter1 & Chr(13) & Parameter2 & Chr(13) & Parameter3
oStreamIn.Close
End Sub
Sub ZuordnungCaseAbfrage()
Dim ConfigFile As File
Dim sConfigFilePath As String
Dim oStreamIn As TextStream
Dim Linecontent As String
Dim Parameter As String
Dim Parameter1 As String
Dim Parameter2 As String
Dim Parameter3 As String
Dim sParameterName As String
Dim sParameterName1 As String
Dim sParameterName2 As String
Dim sParameterName3 As String
sConfigFilePath = "C:\Temp\Konfigurationsdatei.txt"
Set ConfigFile = CATIA.FileSystem.GetFile(sConfigFilePath)
Set oStreamIn = ConfigFile.OpenAsTextStream ("ForReading")
sParameterName1 = "Parameter1"
sParameterName2 = "Parameter2"
sParameterName3 = "Parameter3"
Do While Not (oStreamIn.AtEndOfStream)
Linecontent = oStreamIn.ReadLine
Linecontent = Split(Linecontent,"=")
sParameterName = Linecontent(0)
Parameter = Linecontent(1)
Select Case sParameterName
Case "Parameter1"
Parameter1 = Parameter
Case sParameterName2
Parameter2 = Parameter
Case sParameterName3
Parameter3 = Parameter
end select
Loop
MsgBox Parameter1 & Chr(13) & Parameter2 & Chr(13) & Parameter3
oStreamIn.Close
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP