6. Juli 2026

Ordner und Dateien verwalten

Stellen Sie sich vor, Ihre Aufgabe bestünde darin, 100 Simulationen durchzuführen und die Ergebnisse jedes Laufs in einer Datei in speziell benannten Ordnern neben der Datenbankdatei zu speichern. Anstatt sich wie ein Höhlenmensch mit dem manuellen Anlegen von Ordnern und Dateien sowie dem Kopieren von Daten aus der Parameter-Arbeitsmappe herumzuschlagen, sind Sie sich sicher: Bei INOSIM muss es doch eine Möglichkeit geben, dies zu automatisieren – und die gibt es auch!

In diesem Tipp & Trick zeigen wir Ihnen, wie Sie den Pfad zur Datenbankdatei abrufen, einen Ordner erstellen, den Inhalt eines Tabellenobjekts in eine CSV-Datei und eine Excel-Arbeitsmappe schreiben und diese unter einem bestimmten Pfad speichern. Und um den Workflow der Dateiverwaltung zu vervollständigen, behandeln wir auch, wie man eine Datei löscht.

Im Download-Bereich finden Sie einen Modellexport, der alle Funktionen enthält. Wenn Sie nach einer Möglichkeit suchen, mehrere Simulationsläufe hintereinander durchzuführen, schauen Sie sich diesen Tipp & Trick an.

Abrufen des Pfads der Datenbank und Auswählen des Ausgabeordners

Die folgende Funktion gibt den Verzeichnispfad der Datenbankdatei (.imdf) zurück, die in dieser Instanz von INOSIM geöffnet ist. Anhand dieses Pfads lässt sich der Pfad des Ausgabeordners festlegen und Dateien in diesen Ordner ausgeben.

Public Function RootDatabase() As String

    Dim splitConnectionString() As String
    Dim splitPath() As String
    Dim fullPath As String
    Dim fileName As String
    Dim fileRoot As String

    splitConnectionString = Split(ConnectionString,"""")
    fullPath = splitConnectionString(1)
    splitPath = Split(fullPath,"\")
    fileName = splitPath(UBound(splitPath))
    fileRoot = Left(fullPath,Len(fullPath) - Len(fileName) - 1) ' 1 for \
     
    RootDatabase = fileRoot

End Function

Der Pfad zum Ordner der Datenbank lässt sich wie folgt abrufen und der Ausgabeordner auf einen Unterordner des Pfads der Datenbank festlegen:

Public RootPath As String
RootPath = RootDatabase()

Public FolderPath As String
FolderPath = RootPath & "\Output Files"

Ausgabe eines Table-Objekts als CSV-Datei

Die folgende Funktion gibt ein Tabellenobjekt in eine kommagetrennte Datei aus. Sie nimmt folgende Parameter als Eingabe entgegen:

  • VBA_Table: Das Tabellenobjekt, das in eine kommagetrennte Datei geschrieben werden soll.
  • TableName: Der Name des Tabellenobjekts.
  • FullFilePath: Ordnerpfad & „\Table.csv“
  • Overwrite: Bei Auswahl von „true“ wird die Datei überschrieben, bei Auswahl von „false“ wird der Inhalt an das Ende der Datei angehängt.
  • ri, ci: Bei Auswahl von „true“ wird jeweils der Zeilen- bzw. Spaltenindex geschrieben. Bei Auswahl von „false“ wird der Zeilen- oder Spaltenindex nicht geschrieben.
  • SeparatorTag: Wählt das Trennzeichen aus, Standard ist „;“. Diese Eingabe ist optional.
  • CommentTag: Wählt das Kommentar-Tag aus, Standard ist „<!–“. Diese Eingabe ist optional.
    • Im Code-Snippet „- – -“ durch „<!–“ ersetzen
    • Kommentare sind kein Bestandteil von Standard-CSV-Dateien, sondern eine benutzerdefinierte Anpassung, die sich für unsere Zwecke als nützlich erwiesen hat.
Public Function Table2CSV_Output(VBA_Table As Table, TableName As String, FullFilePath As String, Overwrite As Boolean, ci As Boolean, ri As Boolean, Optional SeparatorTag As String = "", Optional CommentTag As String = "")
' Write table object to csv-file
 
'   VBA_Table       = Table Object
'   TableName       = Section Name e.g. "Resources"
'   FullFilePath    = complete path incl. file name
'   Overwrite       = Overwrite existing data In file(True/False) (Select False To Append)
'   ri, ci          = write row index, column index, true/false
'   SeparatorTag    = Optional, Default ";"
'   CommentTag      = Optional, Default "- - -"    'replace with comment tag given in text
 
    If SeparatorTag = "" Then SeparatorTag = ";"
    If CommentTag = "" Then CommentTag = "- - -"    'replace with comment tag given in text
 
    Dim OutString  As String
    Dim Separator  As String
    Dim fHandle    As Integer
 
    FullFilePath = Trim(FullFilePath)
 
    fHandle = FreeFile
    If Overwrite Then
        FileOpen fHandle, FullFilePath, OpenMode.Output
    Else
        FileOpen fHandle, FullFilePath, OpenMode.Append
    End If
    'Print #fHandle, vbUTF8BOM;              'write file in UTF-8 coding
 
    ' write comment line
    Print fHandle, CommentTag & " Table: " & TableName
 
    Dim row As Long, col As Long    'internal
    Dim rs As Long, cs As Long      'row/column start (0/1) (write first row/first column as table index)
    If ci And VBA_Table.ColumnIndex Then 
        rs = 0      ' Export w column index (row 0)
    ElseIf ci = False And VBA_Table.ColumnIndex = False Then
        rs = 1      ' Export w/o column index (row 0)
    Else
        Stop        ' table does not have a column index
    End If
 
    If ri And VBA_Table.RowIndex Then
        cs = 0
    ElseIf ri = False And VBA_Table.RowIndex = False Then
        cs = 1
    Else
        Stop        ' table does not have a row index
    End If
 
    If VBA_Table.RowCount > 0 Then
        For row = rs To VBA_Table.RowCount
            OutString = ""
            Separator = ""
            For col = cs To VBA_Table.ColumnCount
                OutString = OutString & Separator & VBA_Table(row,col)
                Separator = ";"
            Next
 
            PrintLine fHandle, OutString
 
        Next
    End If
 
    FileClose fHandle
 
End Function

Ausgabe eines Tabellenobjekts als Excel-Arbeitsmappe

Die folgende Funktion gibt ein Table-Objekt als Excel-Workbook mit der WorkbookXML-Extension in INOSIM 2026 aus. Sie benötigt folgende Parameter:

  • VBA_Table: Das Tabellenobjekt, das in ein Workbook geschrieben werden soll
  • FullFilePath: z.B. FolderPath & „\Table.xlsx“
  • TableName: Der Name des Table-Objekts

Beachten Sie, dass diese Funktion standardmäßig automatisch die Zeilen- und Spaltenindizes des Tabellenobjekts schreibt. Sie können die Funktion gerne an Ihren Anwendungsfall anpassen.

Public Function Table2WorkbookXML_Output(VBA_Table As Table, FullFilePath As String, TableName As String)
    Dim wb As Workbook = New Workbook
    wb.Worksheets.Add TableName

    Dim row As Integer
    Dim col As Integer

    For row = 0 To VBA_Table.RowCount
        For col = 0 To VBA_Table.ColumnCount
            wb.Worksheets(TableName).CellYX(row + 1, col + 1).Value = VBA_Table(row, col)
        Next
    Next

    wb.SaveToFile(FullFilePath)
    
End Function

Eine Datei mit WWB löschen

Die folgende Funktion löscht eine Datei anhand ihres vordefinierten Pfads. Sie erwartet folgende Eingabe:

  • FullFilePath: FolderPath & „\Table.xlsx“
    • Dadurch wird der Pfad zu „Table.xlsx“ angegeben, und die Funktion löscht die Datei.

Achtung: Diese Funktion löscht die Datei ohne weitere Rückfrage. Es besteht die Gefahr eines Datenverlusts!

Public Function DeleteFile(FullFilePath As String)
    If Dir(FullFilePath) <> "" Then
        Kill FullFilePath
    End If
End Function

Fragen?

Möchten Sie mehr über dieses Thema erfahren oder haben weitere Fragen? Bitte kontaktieren Sie uns.

Array ( [posts_per_page] => 3 [post_type] => [category__in] => Array ( [0] => 171 ) [orderby] => rand [order] => ASC )

Mehr Tipps & Tricks

Stellen Sie sich vor, Ihre Aufgabe bestünde darin, 100 Simulationen durchzuführen und die Ergebnisse jedes Laufs in einer Datei in speziell benannten Ordnern neben der…

In der Prozessindustrie ist es nicht ungewöhnlich, dass sich der Bedarf an Ressourcen über eine Prozessoperation ändert. Typische Beispiele hierfür sind Kühlmäntel von Reaktoren, in…

15. November 2023

Transferanalyse mit Power BI

In diesem Tipp und Trick wird das Transfer-Analyse-Dashboard vorgestellt. Es handelt sich um eine Erweiterung des Power BI-Standard-Dashboards, mit dem Sie den Netto-Massenfluss einer Teilanlage…

mehr

INOSIM Kontakt

Zu den lokalen Geschäftszeiten

Deutschland +49 231 97 00 250