Which script is better for automation of PTC Integ

2019-09-11 08:22发布

I want to create one script that will open the windows application and use that application to perform some task. I have listed out the activity that I want to automate below:

Application is PTC integrity. It is linked with database server that has lot of files in it which have unique ID. So I need to use ID to open the document and export it.

Steps:

  1. Open the application.
  2. Open the document using ID.
  3. Export the document to some specific format.

I want to know which scripting to be used to automate this process, i.e., I give array of IDs , the script will open the application and then open the document using IDs and export them till all the IDs are exported. Using Excel VBA can it be done.

2条回答
Anthone
2楼-- · 2019-09-11 08:53

I Prefer Python to automate multiple processes in PTC.You can use CLI commands for all your operations.Run those CLI commands from Python using subprocess method. Get your output in your preferable format.

查看更多
Melony?
3楼-- · 2019-09-11 09:08

Yes you can do this in VBA. Your VBA can call a batch file via the Shell command that uses PTC Integrity Command Line Interface.

To export a document you can use the 'im exportissues' CLI command.

To call a batch file synchronously you can use the ShellandWait function below or see related StackOverflow question.

    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess _
    As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle _
    As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Sub ShellAndWait(ByVal program_name As String, _
                             Optional ByVal window_style As VbAppWinStyle = vbNormalFocus, _


                Optional ByVal max_wait_seconds As Long = 0)
'http://www.vbforums.com/showthread.php?t=505172
' Example:
' Private Sub Form_Load()
'  Me.Show
'  ShellAndWait "Notepad.exe", , 3
'  Me.Caption = "done"
' End Sub
Dim lngProcessId As Long
Dim lngProcessHandle As Long
Dim datStartTime As Date
Const WAIT_TIMEOUT = &H102
Const SYNCHRONIZE As Long = &H100000
Const INFINITE As Long = &HFFFFFFFF

    ' Start the program.
    On Error GoTo ShellError
    lngProcessId = Shell(program_name, window_style)
    On Error GoTo 0

    DoEvents

    ' Wait for the program to finish.
    ' Get the process handle.
    lngProcessHandle = OpenProcess(SYNCHRONIZE, 0, lngProcessId)
    If lngProcessHandle <> 0 Then
        datStartTime = Now
        Do
          If WaitForSingleObject(lngProcessHandle, 250) <> WAIT_TIMEOUT Then
            Exit Do
          End If
          DoEvents
          If max_wait_seconds > 0 Then
            If DateDiff("s", datStartTime, Now) > max_wait_seconds Then Exit Do
          End If
        Loop
        CloseHandle lngProcessHandle
    End If
    Exit Sub

ShellError:
End Sub
查看更多
登录 后发表回答