Guten Tag
Mein Ziel ist es, mit RS-Com die Arbeit zu erleichtern.
Gerne möchte ich meine Errungenschaften mit euch teilen und dank euren Vorschlägen verbessern.
Die zip-Datei enthält eine "vollständige" xlsm-Datei mit einigen Hilfsprogrammen.
Als erste Kostprobe mein Makro zum erstellen eines Modells aus einer Vorlage.
Viel Spass und bis bald.
Mein Ziel ist es, mit RS-Com die Arbeit zu erleichtern.
Gerne möchte ich meine Errungenschaften mit euch teilen und dank euren Vorschlägen verbessern.
Die zip-Datei enthält eine "vollständige" xlsm-Datei mit einigen Hilfsprogrammen.
Als erste Kostprobe mein Makro zum erstellen eines Modells aus einer Vorlage.
Code:
Option Explicit
'Erstellt von Bruno Maurer am 25.04.2017
Sub pRSsave()
Dim sBox As String
Dim sVpfad As String
Dim sPfad As String
Dim sVname As String
Dim sName As String
Dim sFile As String
Dim i As Integer
Dim iCount As Integer
'RS-COM Objekte (Verweis auf "Dlubal RSTAB Type Library v8.0" muss aktiv sein.)
Dim vApp As IApplication
On Error GoTo e 'Sprung falls Fehler
' Variabeln einlesen
sVname = Cells(5, 2)
sVpfad = "N:\500_Engineering\511_RSTAB\513_Vorlagen\" & sVname & ".st8"
sName = Cells(2, 2)
sPfad = Cells(3, 2)
sFile = sPfad & "\" & sName & ".rs8"
'Kontrollen
If Mid(sVname, 2, 1) <> "-" Then 'Programm-Abbruch mit MessageBox
sBox = MsgBox("Es wurde keine nH-RSTAB-Vorlage aktiviert." & Chr(13) & "Deren Name enthält als zweites Zeichen einen Bindestrich.", , "Meldung")
Exit Sub
End If
Call pExists(sPfad, sName)
If bExists = True Then 'Programm-Abbruch mit MessageBox
sBox = MsgBox("Die Datei exisiert bereits." & Chr(13) & "Wähle einen anderen Namen.", , "Meldung")
Exit Sub
End If
Set vApp = New RSTAB8.Application
vApp.LockLicense 'Lizenz blockieren
vApp.Show
vApp.OpenModel (sVpfad) 'Modell(-vorlage) öffnen
vApp.GetActiveModel.Save (sFile) 'Modell abspeichern (Es wird ohne zu fragen überschrieben. Darum die Kontrolle am Anfang.)
Application.WindowState = xlMinimized
e: 'Fehlermeldung ausgeben
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical, Err.Source
vApp.UnlockLicense 'unlocking RS-COM licence
Set vApp = Nothing 'Objektvariabeln leeren
End Sub
Sub pExists(ByVal sPfad As String, ByVal sName As String)
Dim oFS As Object
Dim oFolder As Object
Dim oFile As Object
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFS.GetFolder(sPfad)
bExists = False
For Each oFile In oFolder.Files
If oFile.Name Like sName & ".rs8" Then
bExists = True
End If
Next oFile
Set oFS = Nothing 'Objektvariabeln leeren
Set oFolder = Nothing
Set oFile = Nothing
End Sub