VBA Проблема изменения навыков агента через CMS

Используя приведенный ниже код, я могу получить Excel для работы с CMS, но кажется, что мои разрешения не путешествуют с кодом. Я получаю сообщение об ошибке "Не удается изменить группу split/ навык. Нет разрешения на запись на 665". У меня есть разрешение на 665 (и 669) при ручном обучении. Есть идеи, что я здесь делаю не так?

 Sub Swap_Skill()Dim cvsApp As Object
 Dim cvsConn As Object
 Dim cvsSrv As Object
 Dim Rep As Object
 Dim Info As Object, Log As Object, b As Object
 Dim AcmS As String

 Set cvsApp = CreateObject("ACSUP.cvsApplication")
 Set cvsConn = CreateObject("ACSCN.cvsConnection")
 Set cvsSrv = cvsApp.Servers(1)
 Set Rep = CreateObject("ACSREP.cvsReport")
 Set cvsSrv = cvsApp.Servers(1)
 AcmS = Range("K6").Value 'variable value, currently 1217259
 On Error Resume Next
 Set AgMngObj = cvsSrv.AgentMgmt
 On Error Resume Next

 Set AgMngObj = cvsSrv.AgentMgmt
 ReDim SetArr(2, 3)
 SetArr(1, 1) = Range("L4").Value 'variable value, currently 665
 SetArr(1, 2) = 1
 SetArr(1, 3) = 0
 SetArr(2, 1) = Range("N4").Value 'variable value, currently 669
 SetArr(2, 2) = 12
 SetArr(2, 3) = 0

 AgMngObj.AcdStartUp -1, "", cvsSrv.ServerKey, -1
 AgMngObj.OleAgentSetSkill 1, "" & AcmS & "", 1, 0, 0, 0, 2, SetArr, ""

 Set AgMngObj = Nothing
 Set cvsApp = Nothing
 Set cvsConn = Nothing
 Set cvsSrv = Nothing
 End Sub 

1 ответ

Возможно, вы решили это давным-давно, но в противном случае я вставлю вам свой код для агентов умений:

Option Explicit
Dim cvsApp As New ACSUP.cvsApplication
Dim cvsConn As New ACSCN.cvsConnection
Dim cvsSrv As New ACSUPSRV.cvsServer
Dim Rep As New ACSREP.cvsReport
Sub SkillAgentes()


    Application.ScreenUpdating = False
    Set cvsSrv = cvsApp.Servers(1)

    Dim LastRow As Long, LastCol As Long, ws As Worksheet, wsData As Worksheet, F As Integer, C As Integer, _
    i As Integer, S As Integer, Skill As String, Prtr As Integer, SetArr() As Variant, Agentes As String, _
    Cantidad As Integer, ACD As Integer, wsA As Worksheet, wsS As Worksheet, AgMngObj As Object

    Set wsData = ThisWorkbook.Sheets("Trasvases")
    Set ws = ThisWorkbook.Sheets("Cambios Skill")
    Set wsA = ThisWorkbook.Sheets("Agentes")
    Set wsS = ThisWorkbook.Sheets("Skills")
    Set AgMngObj = cvsSrv.AgentMgmt

    S = 1
    LastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
    For i = 2 To LastRow
        LastCol = ws.Cells(i, 8).End(xlToRight).Column
        Agentes = ws.Cells(i, ws.Cells.Find("login").Column)
        Cantidad = ws.Cells(i, 3)
        If ws.Cells(i, 2) = "SUR" Then ACD = 1
        If ws.Cells(i, 2) = "NORTE" Then ACD = 2
        ReDim SetArr(Cantidad, 4)
        For C = 8 To LastCol Step 2
            On Error Resume Next
            Skill = ws.Cells(i, C).Value
            Prtr = ws.Cells(i, C + 1).Value
            SetArr(S, 1) = Skill
            SetArr(S, 2) = Prtr
            SetArr(S, 3) = 0
            SetArr(S, 4) = 0
            S = S + 1
        Next C
        AgMngObj.AcdStartUp -1, "", cvsSrv.ServerKey, -1
        AgMngObj.OleAgentSetSkill_R16_1 ACD, Agentes, Prtr, 0, 0, 0, Cantidad, SetArr, ""
        Dim Tiempo As String: Tiempo = Format(Now, "hh:mm:ss")
        ws.Cells(i, 50).Value = Tiempo


        LastRow = wsData.Range("A1000").End(xlUp).Row
        Dim x As Integer
        For x = 1 To LastRow
            If wsData.Cells(x, 5) = wsA.Cells.Find(Agentes).Offset(0, 1) Then
                If wsData.Cells(x, 7) = 0 Then
                    wsData.Cells(x, 7).Value = Tiempo
                    GoTo Cambiado
                End If
            End If
        Next
        F = wsData.Range("A1000").End(xlUp).Row + 1
        wsData.Cells(F, 1).Value = Format(Date, "dd/mm/yyyy")
        If Format(Date, "dd") < 13 Then wsData.Cells(F, 1).Value = Format(Date, "mm/dd/yyyy")
        wsData.Cells(F, 2).Value = ws.Cells(19, 1)
        wsData.Cells(F, 3).Value = ws.Cells(21, 1)
        wsData.Cells(F, 4).Value = wsA.Cells.Find(Agentes, LookAt:=xlWhole).Offset(0, 2).Value
        wsData.Cells(F, 5).Value = wsA.Cells.Find(Agentes, LookAt:=xlWhole).Offset(0, 1)
        wsData.Cells(F, 6).Value = Tiempo
        wsData.Cells(F, 8).FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-1]-RC[-2])"
        wsData.Cells(F, 9).FormulaR1C1 = ws.Cells(i, ws.Cells.Find("Modo Origen").Column)
        wsData.Cells(F, 10).Value = _
            wsS.Cells(wsS.Cells.Find(ws.Cells(i, ws.Cells.Find("Modo a conectar:").Column)).Row, _
            wsS.Cells.Find("Destino").Column)
        wsData.Cells(F, 11).Value = ws.Cells(i, ws.Cells.Find("Motivo Trasvase").Column).Value
Cambiado:
        S = 1
    Next i

В нем действительно слишком много кода, но я верю, что вы можете получить то, что вам нужно. С помощью этого кода вы можете изменить столько навыков агентов, сколько захотите. Вот как должна выглядеть таблица, где вы вводите логины и навыки. Обратите внимание, что вы должны указать как минимум ACD, количество навыков, которые вы собираетесь использовать, логин, навыки и их приоритет.

Как выглядит стол

Большая часть материала состоит в том, чтобы записать, откуда агент идет и куда тратится время на эти изменения.

Надеюсь, это поможет и извините за мой английский.

Другие вопросы по тегам