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.
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.
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? –