我想创建一个脚本来打开 Windows 应用程序并使用该应用程序执行某些任务。我在下面列出了我想要自动化的活动:
应用程序是 PTC 的完整性。它与数据库服务器链接,其中包含许多具有唯一 ID 的文件。所以我需要使用ID打开文档并导出。
脚步:
- 打开应用程序。
- 使用 ID 打开文档。
- 将文档导出为某种特定格式。
我想知道使用哪个脚本来自动化这个过程,即,我给出了 ID 数组,脚本将打开应用程序,然后使用 ID 打开文档并导出它们,直到所有 ID 都被导出。使用 Excel VBA 可以做到。
我想创建一个脚本来打开 Windows 应用程序并使用该应用程序执行某些任务。我在下面列出了我想要自动化的活动:
应用程序是 PTC 的完整性。它与数据库服务器链接,其中包含许多具有唯一 ID 的文件。所以我需要使用ID打开文档并导出。
脚步:
我想知道使用哪个脚本来自动化这个过程,即,我给出了 ID 数组,脚本将打开应用程序,然后使用 ID 打开文档并导出它们,直到所有 ID 都被导出。使用 Excel VBA 可以做到。
是的,您可以在 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
我更喜欢 Python 在 PTC 中自动执行多个流程。您可以使用 CLI 命令进行所有操作。使用 subprocess 方法从 Python 运行这些 CLI 命令。以您喜欢的格式获取输出。