hexagon logo

Help with 2 Scripts

Hi guys

I'm trying to get 2 scripts to work which I took from this forum and tried to adjust to our company needs as well as unify the code (using the same commands & variables)
I don't know how to script I just tried to understand from the description in the threads and in the scripts.

The first one is the folder create script:
https://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/8758-create-folder-script
Sub main()


'************************************************* ************************************************** **********************
' Basierend auf dem "Create folder" Script von vpt.se und chadjac
' Based On the "Create folder" script from vpt.se und chadjac
' https://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/8758-create-folder-script
'************************************************* ************************************************** **********************


'-------------------------------------------------------------------------------------------------------------------------
' Erstellt die Objekte
' Create the objects
'-------------------------------------------------------------------------------------------------------------------------
Dim pcdapp As Object
Set pcdapp = createobject("pcdlrn.application")

Dim pcdpartprogram As Object
Set pcdpartprogram = pcdapp.activepartprogram

Dim fso As Object
Set fso = createobject("scripting.filesystemobject")


'-------------------------------------------------------------------------------------------------------------------------
' Findet die PC-DMIS Variable für den Protokoll Speicherpfad
' Gets the PC-DMIS variable For the protocol path
'-------------------------------------------------------------------------------------------------------------------------
Dim pathname As Object
Set pathname=pcdpartprogram.getvariablevalue("V_PROTOK OLL_PFAD")

strpath=pathname.stringvalue


'-------------------------------------------------------------------------------------------------------------------------
' Prüft ob der Protokoll Speicherpfad existiert & erstellt ihn wenn nicht
' Checks If the protocol path exists And creates it If Not
'-------------------------------------------------------------------------------------------------------------------------
Dim fsofolder As Object

If Not fso.folderexists(strpath) Then
Set fsofolder = fso.createfolder(strpath)
End If



'-------------------------------------------------------------------------------------------------------------------------
' Räumt auf
' Tidies up
'-------------------------------------------------------------------------------------------------------------------------
Set fso = Nothing
Set pcdpartprogram = Nothing
Set pcdapp = Nothing


End Sub


and the second is the AutoArchive script:
https://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/390021-auto-archive-freebie
Sub main()


'************************************************* ************************************************** **********************
' Basierend auf dem "AUTOARCHIVE.BAS" Script von NinjaBadger (JON WOOD)
' Based On the "AUTOARCHIVE.BAS" script from NinjaBadger (JON WOOD)
' https://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/390021-auto-archive-freebie
'************************************************* ************************************************** **********************


'-------------------------------------------------------------------------------------------------------------------------
' Erstellt die Objekte
' Create the objects
'-------------------------------------------------------------------------------------------------------------------------
Dim pcdapp As Object
Set pcdapp = createobject("pcdlrn.application")

Dim pcdpartprogram As Object
Set pcdpartprogram = pcdapp.activepartprogram

Dim fso As Object
Set fso = createobject("scripting.filesystemobject")


'-------------------------------------------------------------------------------------------------------------------------
' Speichert das originale Messprogramm
' Saves the original part program
'-------------------------------------------------------------------------------------------------------------------------
pcdpartprogram.save


'-------------------------------------------------------------------------------------------------------------------------
' Findet den vollen Namen des originalen Messprogramms (mit Pfad & Dateiendung)
' Gets the full Name of the original part program (With path & file extension)
'-------------------------------------------------------------------------------------------------------------------------
Dim source_path
source_path = pcdpartprogram.fullname


'-------------------------------------------------------------------------------------------------------------------------
' Findet die PC-DMIS Variablen für den Archiv Speicherpfad und Dateinamen
' Gets the PC-DMIS variables For the archive path And file Name
'-------------------------------------------------------------------------------------------------------------------------
Dim pathname As Object
Set pathname=pcdpartprogram.getvariablevalue("V_ARCHIV _PFAD")

strpath=pathname.stringvalue


Dim partname As Object
Set partname=pcdpartprogram.getvariablevalue("V_ARCHIV _NAME")

strpart=partname.stringvalue


'-------------------------------------------------------------------------------------------------------------------------
' Prüft ob der Archiv Speicherpfad existiert & erstellt ihn wenn nicht
' Checks If the archive path exists And creates it If Not
'-------------------------------------------------------------------------------------------------------------------------
Dim fsofolder As Object

If Not fso.folderexists(strpath) Then
Set fsofolder = fso.createfolder(strpath)
End If


'-------------------------------------------------------------------------------------------------------------------------
' Generiert den vollen Archiv Namen (mit Pfad & Dateiendung)
' Generates the full archive Name (With path & file extension)
'-------------------------------------------------------------------------------------------------------------------------
dest_path = strpath & "\" & strpart & "_" & format(now(),"YYYYMMDDHHNNSS") & ".prg"
'MsgBox(dest_path)


'-------------------------------------------------------------------------------------------------------------------------
' Kopiert die Originaldatei In das Archiv
' Copies the original file To the archive
'-------------------------------------------------------------------------------------------------------------------------
fso.copyfile source_path, dest_path


'-------------------------------------------------------------------------------------------------------------------------
' Räumt auf
' Tidies up
'-------------------------------------------------------------------------------------------------------------------------
Set fso = Nothing
Set pcdpartprogram = Nothing
Set pcdapp = Nothing


End Sub


This is the Code in PC-DMIS:
 ​​​​​​​


On both the scripts I get the error (OLE Automation method exception) on the same command: Set fsofolder = fso.createfolder(strpath)

Do you guys see the error I made?

Thanks in advance for your help.

Attached Files
Parents

  • Thanks for the input!
    I had some time today to test different things with our IT and they came to the same conclusion.

    I already tried to adjust the script so it looks a bit different than yours:

    Sub main()


    '************************************************* ************************************************** **********************
    ' Basierend auf dem "Create folder" Script von vpt.se und chadjac
    ' Based On the "Create folder" script from vpt.se und chadjac
    ' https://www.pcdmisforum.com/forum/pc...-folder-script
    '************************************************* ************************************************** **********************

    '-------------------------------------------------------------------------------------------------------------------------
    ' Erstellt die Objekte
    ' Create the objects
    '-------------------------------------------------------------------------------------------------------------------------
    Dim pcdapp As Object
    Set pcdapp = createobject("pcdlrn.application")

    Dim pcdpartprogram As Object
    Set pcdpartprogram = pcdapp.activepartprogram

    Dim fso As Object
    Set fso = createobject("scripting.filesystemobject")

    '-------------------------------------------------------------------------------------------------------------------------
    ' Definiert das Hauptverzeichniss für den Protokoll Speicherpfad
    ' Defines the root folder For the protocol path
    '-------------------------------------------------------------------------------------------------------------------------
    strpath = "W:\TEST\10_Messprotokolle"
    MsgBox(strpath)

    '-------------------------------------------------------------------------------------------------------------------------
    ' Findet die PC-DMIS Variablen für den Protokoll Speicherpfad
    ' Gets the PC-DMIS variables For the protocol path
    '-------------------------------------------------------------------------------------------------------------------------
    Dim strartikel As Object
    Set strartikel = pcdpartprogram.getvariablevalue("V_ARTIKEL")
    MsgBox(strartikel)

    Dim strpa As Object
    Set strpa = pcdpartprogram.getvariablevalue("V_PA")
    MsgBox(strpa)

    Dim stroperation As Object
    Set stroperation = pcdpartprogram.getvariablevalue("V_OPERATIONSSCHRI TT")
    MsgBox(stroperation)

    '-------------------------------------------------------------------------------------------------------------------------
    ' Prüft ob der Protokoll Speicherpfad existiert & erstellt ihn wenn nicht
    ' Checks If the protocol path exists And creates it If Not
    '-------------------------------------------------------------------------------------------------------------------------
    Dim fsofolder As Object

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & strartikel
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & strpa
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & stroperation
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    '-------------------------------------------------------------------------------------------------------------------------
    ' Räumt auf
    ' Tidies up
    '-------------------------------------------------------------------------------------------------------------------------
    Set fso = Nothing
    Set pcdpartprogram = Nothing
    Set pcdapp = Nothing


    End Sub


    Now I'm running into the next problem...Disappointed

    Somehow the script can't get the variables from PC-DMIS.
    I get an error message with every MsgBox after the different variables.

    The error message is:
    Error on line: 36 - OLE Automation object does not have a default value

    Attached Files
Reply

  • Thanks for the input!
    I had some time today to test different things with our IT and they came to the same conclusion.

    I already tried to adjust the script so it looks a bit different than yours:

    Sub main()


    '************************************************* ************************************************** **********************
    ' Basierend auf dem "Create folder" Script von vpt.se und chadjac
    ' Based On the "Create folder" script from vpt.se und chadjac
    ' https://www.pcdmisforum.com/forum/pc...-folder-script
    '************************************************* ************************************************** **********************

    '-------------------------------------------------------------------------------------------------------------------------
    ' Erstellt die Objekte
    ' Create the objects
    '-------------------------------------------------------------------------------------------------------------------------
    Dim pcdapp As Object
    Set pcdapp = createobject("pcdlrn.application")

    Dim pcdpartprogram As Object
    Set pcdpartprogram = pcdapp.activepartprogram

    Dim fso As Object
    Set fso = createobject("scripting.filesystemobject")

    '-------------------------------------------------------------------------------------------------------------------------
    ' Definiert das Hauptverzeichniss für den Protokoll Speicherpfad
    ' Defines the root folder For the protocol path
    '-------------------------------------------------------------------------------------------------------------------------
    strpath = "W:\TEST\10_Messprotokolle"
    MsgBox(strpath)

    '-------------------------------------------------------------------------------------------------------------------------
    ' Findet die PC-DMIS Variablen für den Protokoll Speicherpfad
    ' Gets the PC-DMIS variables For the protocol path
    '-------------------------------------------------------------------------------------------------------------------------
    Dim strartikel As Object
    Set strartikel = pcdpartprogram.getvariablevalue("V_ARTIKEL")
    MsgBox(strartikel)

    Dim strpa As Object
    Set strpa = pcdpartprogram.getvariablevalue("V_PA")
    MsgBox(strpa)

    Dim stroperation As Object
    Set stroperation = pcdpartprogram.getvariablevalue("V_OPERATIONSSCHRI TT")
    MsgBox(stroperation)

    '-------------------------------------------------------------------------------------------------------------------------
    ' Prüft ob der Protokoll Speicherpfad existiert & erstellt ihn wenn nicht
    ' Checks If the protocol path exists And creates it If Not
    '-------------------------------------------------------------------------------------------------------------------------
    Dim fsofolder As Object

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & strartikel
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & strpa
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    strpath = strpath & "\" & stroperation
    MsgBox(strpath)

    If Not fso.folderexists(strpath) Then
    Set fsofolder = fso.createfolder(strpath)
    End If

    '-------------------------------------------------------------------------------------------------------------------------
    ' Räumt auf
    ' Tidies up
    '-------------------------------------------------------------------------------------------------------------------------
    Set fso = Nothing
    Set pcdpartprogram = Nothing
    Set pcdapp = Nothing


    End Sub


    Now I'm running into the next problem...Disappointed

    Somehow the script can't get the variables from PC-DMIS.
    I get an error message with every MsgBox after the different variables.

    The error message is:
    Error on line: 36 - OLE Automation object does not have a default value

    Attached Files
Children
No Data