1

我想创建一个脚本来打开 Windows 应用程序并使用该应用程序执行某些任务。我在下面列出了我想要自动化的活动:

应用程序是 PTC 的完整性。它与数据库服务器链接,其中包含许多具有唯一 ID 的文件。所以我需要使用ID打开文档并导出。

脚步:

  1. 打开应用程序。
  2. 使用 ID 打开文档。
  3. 将文档导出为某种特定格式。

我想知道使用哪个脚本来自动化这个过程,即,我给出了 ID 数组,脚本将打开应用程序,然后使用 ID 打开文档并导出它们,直到所有 ID 都被导出。使用 Excel VBA 可以做到。

4

2 回答 2

1

是的,您可以在 VBA 中执行此操作。您的 VBA 可以通过使用 PTC Integrity 命令行界面的 Shell 命令调用批处理文件。

要导出文档,您可以使用“im exportissues”CLI 命令。

要同步调用批处理文件,您可以使用下面的 ShellandWait 函数或查看相关的 StackOverflow 问题。

    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
于 2016-05-10T10:26:36.217 回答
0

我更喜欢 Python 在 PTC 中自动执行多个流程。您可以使用 CLI 命令进行所有操作。使用 subprocess 方法从 Python 运行这些 CLI 命令。以您喜欢的格式获取输出。

于 2019-03-22T10:23:32.163 回答