2015-10-16 27 views
0

我想創建一個腳本,將打開Windows應用程序,並使用該應用程序來執行一些任務的自動化更好。我列舉了,我想下面的自動化活動:哪個腳本是PTC完整性應用

應用是PTC的完整性。它與數據庫服務器相連,數據庫服務器中有很多文件都有唯一的ID。所以我需要使用ID來打開文檔並將其導出。

步驟:

  1. 打開應用程序。
  2. 使用ID打開文檔。
  3. 將文檔導出爲某種特定的格式。

我想知道哪些腳本被用來自動完成這一過程,即我給ID的陣列,該腳本將打開應用程序,然後使用標識打開該文檔並將其出口,直到所有的ID出口。使用Excel VBA可以完成。

+0

問題的標題不是很清楚:沒有提及PTC Integrity或VBA。 –

回答

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