我想创建一个脚本,将打开windows应用程序,并使用该应用程序来执行一些任务。我在下面列出了我想要自动化的活动:
应用程序是PTC完整性。它与数据库服务器链接,数据库服务器中有许多文件,这些文件具有唯一的ID。所以我需要使用ID来打开文档并导出它。
步骤:
- 打开应用程序。
- 使用ID打开文档。
- 将文件导出为特定格式
我想知道要使用哪个脚本来自动化此过程,即,我给出id数组,脚本将打开应用程序,然后使用id打开文档并导出它们,直到导出所有id。使用Excel VBA可以完成。
是的,你可以在VBA中做到这一点。您的VBA可以通过使用PTC完整性命令行接口的Shell命令调用批处理文件。
要导出文档,可以使用'im exportissue ' 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命令。