2017-06-30 1 views
0

Unter Verwendung von Code, ich bin in der Lage, Excel mit CMS zu arbeiten, aber es scheint, dass meine Permissons nicht mit dem Code reisen. Ich erhalte den Fehler "Split/Skill kann nicht geändert werden. Keine Schreibberechtigung für 665". Ich habe die Berechtigung 665 (und 669) beim manuellen Skillen. Irgendeine Idee, was ich hier falsch mache?VBA Problem Agent Fähigkeiten wechseln durch CMS

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 
+0

Welche Zeile wirft den Fehler auf? Ist 'On Error Resume Next' vorhanden, wenn der Fehler auftritt? Der zweite ist vergeblich. Oder meintest du, 'On Error GoTo 0 'dort zu haben, um die Fehlerbehandlung wiederherzustellen? Sie erstellen ein Verbindungsobjekt, tun aber nie etwas damit. Verweisen Sie auf diese Typbibliothek und arbeiten Sie möglichst mit dem früh gebundenen Code. Sie können die im Objektbrowser (F2) verfügbaren Typen und Elemente durchsuchen und erhalten Autovervollständigung/IntelliSense, um das Erkennen der API zu erleichtern. Vielleicht möchte eine Verbindung "offen" sein? –

Antwort

0

Vielleicht gelöst u dies vor langer Zeit, aber sonst werde ich Ihnen meinen Code Geschick Agenten fügen:

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 

es in der Tat zu viel Code hat, aber ich glaube können Sie bekommen, was du brauchst. Mit diesem Code können Sie sofort so viele Agentenfähigkeiten ändern, wie Sie möchten. Dies ist, wie die Tabelle, in der Sie die Logins und Fähigkeiten eingeben, sein sollte. Beachten Sie, dass Sie mindestens den ACD, die Menge der Fähigkeiten, die Sie eingeben müssen, den Login, die Fähigkeiten und ihre Priorität eingeben müssen.

What the table looks like

Die meisten Sachen ist aufzuzeichnen, wo der Agent kommt, geht an und die Zeit auf dieser Änderung verbringt.

Ich hoffe, es hilft und tut mir leid für mein Englisch.