0

6 か月間、毎日 16 の個別のスプリット スキルに関するレポートを実行する必要があるため、自動化スクリプトを作成しています。スクリプトは機能しますが、1 つの問題があります。63 回の繰り返しが実行されます (つまり、16 = 48 + 15 = 63 で 3 日)。15 回目のループ (全体で 63 回目の繰り返し) の後、エラーが発生します。「Microsoft Excel は別のアプリケーションが OLE アクションを完了するのを待っています」または、CMS 側で何かを完全に閉じていない可能性があります。それが 63 回目の繰り返し (64-1) であるという事実は非常に疑わしいようですが、変数に関する限り、何をオーバーロードできるかわかりません。8 ビット変数はありません (何か不足していない限り)。また、マクロを実行した後、再起動せずに手動で CMS アプリに再度ログインすることはできません。そのため、何かを完全に閉じているわけではなく、CMS で許可されているインスタンスの数に制限があるのではないかと考えています。セキュリティ上の理由から、スキルの名前、サーバー アドレス、ユーザー名、およびパスワードが削除されていることを除いて、以下のスクリプトを含めました。どんな助けでも大歓迎です。

Public Sub Single_CMS_Report_Extract()

On Error Resume Next

' Add the files specified below to the References section:
' Tools -> References -> Browse to the CMS directory,
' e.g.: "C:\Program Files\Avaya\CMS Supervisor R14"
Dim cmsApplication As ACSUP.cvsApplication 'acsApp.exe
Dim cmsServer As ACSUPSRV.cvsServer 'acsSRV.exe
Dim cmsConnection As ACSCN.cvsConnection 'cvsconn.dll
Dim cmsCatalog As ACSCTLG.cvsCatalog 'cvsctlg.dll
Dim cmsReport As Object 'ACSREP.cvsReport 'acsRep.exe

Dim myLog As String, myPass As String, myServer As String
Dim reportPath As String, reportName As String, reportPrompt(1 To 2, 1 To 3) As String
Dim exportPath As String, exportName As String

Dim StartRunTime, EndRunTime As Date

Dim DayToRun, EndDate As Date
Dim Skill(1 To 16) As String

MsgBox ("Please ensure CMS open and logged in prior to continuing")
StartRunTime = Now

'Start Date
DayToRun = "12/16/2015"
'End Date
EndDate = "12/21/2015"



Skill(1) = "XXXXXXXX"
Skill(2) = "XXXXXXXX"
Skill(3) = "XXXXXXXX"
Skill(4) = "XXXXXXXX"
Skill(5) = "XXXXXXXX"
Skill(6) = "XXXXXXXX"
Skill(7) = "XXXXXXXX"
Skill(8) = "XXXXXXXX"
Skill(9) = "XXXXXXXX"
Skill(10) = "XXXXXXXX"
Skill(11) = "XXXXXXXX"
Skill(12) = "XXXXXXXX"
Skill(13) = "XXXXXXXX"
Skill(14) = "XXXXXXXX"
Skill(15) = "XXXXXXXX"
Skill(16) = "XXXXXXXX"

While DayToRun < (EndDate + 1)




    For i = 1 To 16

        ' Assigns Variables
        myLog = "myuser"
        myPass = "mypass"
        myServer = "xx.xx.xx.xx"
        'reportPath is the tab and "Category" that the report is found in Avaya
        reportPath = "Historical\Split/Skill\"
        reportName = "Summary Interval"

        'list of input names requested.....
        reportPrompt(1, 1) = "Split/Skill"
        reportPrompt(1, 2) = "Date"
        reportPrompt(1, 3) = "Times"

        'list of responses being used for input
        reportPrompt(2, 1) = Skill(i)
        reportPrompt(2, 2) = DayToRun
        reportPrompt(2, 3) = "00:00-23:30"

        'path and name of exported report file
        exportPath = "H:\Avaya data\"
        If i <> 5 Then
            exportName = Month(DayToRun) & "-" & Day(DayToRun) & "-" & Skill(i) & ".csv"
        Else
            exportName = Month(DayToRun) & "-" & Day(DayToRun) & "- DL-Toll Free" & ".csv"
        End If

        ' Open the CMS Application, launches acsApp.exe
        ' If a CMS Supervisor console is already open,
        ' the existing acsApp.exe is used.
        Set cmsApplication = CreateObject("ACSUP.cvsApplication")
        Set cmsServer = CreateObject("ACSUPSRV.cvsServer")
        Set cmsConnection = CreateObject("ACSCN.cvsConnection")
        cmsConnection.bAutoRetry = True

        ' Connetsc to the server, launches acsSRV.exe & ACSTrans.exe (2x)
        If cmsApplication.CreateServer(myLog, myPass, "", myServer, False, "ENU", cmsServer, cmsConnection) Then
        If cmsConnection.login(myLog, myPass, myServer, "ENU", "", False) Then
        End If
        End If

        ' Gets collection of Reports available on cmsServer
        Set cmsCatalog = cmsServer.Reports
        If cmsServer.Connected = False Then cmsServer.Reports.ACD = 1

        ' Sets parameters for report, launches ACSRep.exe (2x)
        cmsCatalog.CreateReport cmsCatalog.Reports.Item(reportPath & reportName), cmsReport



        If cmsReport.SetProperty(reportPrompt(1, 1), reportPrompt(2, 1)) And cmsReport.SetProperty(reportPrompt(1, 2), reportPrompt(2, 2)) And cmsReport.SetProperty(reportPrompt(1, 3), reportPrompt(2, 3)) Then
        End If

        ' Runs report and extracts results  --- the 44 is the field delimiter
        cmsReport.ExportData exportPath & exportName, 44, 0, False, False, True


        ' Kills active report & server
        If Not cmsServer.Interactive Then
        cmsServer.ActiveTasks.Remove cmsReport.TaskID
        cmsApplication.Servers.Remove cmsServer.ServerKey
        End If

        ' Logs out
        cmsReport.Quit
        cmsConnection.Logout
        cmsConnection.Disconnect
        cmsServer.Connected = False

        ' Releases objects
        Set cmsReport = Nothing
        Set cmsCatalog = Nothing
        Set cmsConnection = Nothing
        Set cmsServer = Nothing
        Set cmsApplication = Nothing


    Next
    i = Nothing
    DayToRun = DateAdd("d", 1, DayToRun)
    Wend

EndRunTime = Now
MsgBox ("Run-time = " & Minute(EndRunTime - StartRunTime) & ":" & Second(EndRunTime - StartRunTime))

End Sub
4

0 に答える 0